python3.4 + PyQt5 - 如何在不同文件之间连接信号

时间:2015-06-25 05:47:13

标签: python pyqt5

我最近在使用python3.4和PyQt5。将所有代码放在一个.py文件中似乎太大了,以后不方便扩展。所以我试图把它分成几个文件。

不幸的是,我在连接信号方面遇到了一些麻烦。

以下是我的代码示例:

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMainWindow
from Ui_BA import Ui_MainWindow
from PyQt5.QtGui import *
import AA, sys

class BA(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(BA, self).__init__(parent)
        self.setupUi(self)
        a = AA.AAUI.search_button_released(self)
        self.aa_search_button.released.connect(lambda: a)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    dlg = BA()
    dlg.show()
    sys.exit(app.exec_())

AA.py是这样的:

from PyQt5.QtWidgets import QMainWindow
from Ui_BA import Ui_MainWindow

class AAUI(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(AAUI, self).__init__(parent)
        self.setupUi(self)
    def search_button_released(self):
        self.statusBar.showMessage('BlaBlaBla')

当我运行主py时,statusBar会自动显示消息,而不是在点击搜索按钮后显示消息。

感谢您的阅读。请帮忙。

1 个答案:

答案 0 :(得分:0)

首先,您不应该以这种方式拆分项目。在我自己的作品中,我试图将每个文件中的每个类分开,而不是在几个文件之间拆分一个类代码。将来你会遇到很多问题(这只是我的意见!)

在您的情况下,字符串a = AA.AAUI.search_button_released(self)会自动执行该功能。你应该删除它并替换你的lambda:

self.aa_search_button.released.connect(lambda: AA.AAUI.search_button_released(self))

这会有所帮助!