簡體   English   中英

python3.4 + PyQt5-如何在不同文件之間連接信號

[英]python3.4 + PyQt5 - How to connect signals between different files

我最近正在使用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會自動顯示消息,而不是單擊搜索按鈕之后。

感謝您的閱讀。 請幫忙。

首先,您不應該以這種方式拆分項目。 在我自己的作品中,我試圖將每個文件中的每個類分開,而不是將一個類代碼拆分到多個文件中。 將來您會遇到很多問題(這只是我的意見!)

在您的情況下,字符串a = AA.AAUI.search_button_released(self)自動執行該功能。 您應該刪除它並替換您的lambda:

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

會的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM