从单独的python文件调用的PyQt5按钮方法 [英] PyQt5 push button method called from separate python file

查看:88
本文介绍了从单独的python文件调用的PyQt5按钮方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的ma​​inWindow.py,这里我只有一个按钮:

This is my mainWindow.py, here I have a only a push button:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Run"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

我想创建一个单独的文件 eventHandler.py,我可以在其中编写 pushButton 调用方法.

I want to create a separate file eventHandler.py, where I can write pushButton calle method.

from PyQt5 import QtCore, QtGui, QtWidgets
from mainWindow import *

self.pushButton.clicked.connect(self.function1)

def function1(self):                                             
        print("function called")

谁能告诉我如何初始化类并正确编写它?

Can anyone tell me how I can initialize classes and write it properly?

推荐答案

你的做法不妥,eventHandler必须是mainWindow使用的库,反之则不行.

You have an inappropriate approach, eventHandler must be a library that is used by mainWindow, and not vice versa.

ma​​in.py

from PyQt5 import QtCore, QtGui, QtWidgets

from mainWindow import Ui_MainWindow

from eventHandler import function1

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(function1)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

eventHandler.py

def function1():                                
    print("function called")

这篇关于从单独的python文件调用的PyQt5按钮方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆