簡體   English   中英

PyQt5按鈕單擊在導入的類中不起作用

[英]PyQt5 button click not work in imported class

在文件index.py中,此行工作正常,但在導入的類中,類似的行將不起作用! 我不明白為什么。

然后我用鼠標單擊pushButton,它不起作用,沒有調用BtnClck1方法,也沒有print-SecondWindowPrint。

但是,如果我以編程方式調用PushButton,則效果很好。

如果我從index.py建立連接,PushButton也可以正常工作

這是GitHub github.com/m0x3/test1上的完整代碼

這是代碼:

從PyQt5導入index.py sys從PyQt5導入uic.QtWidgets導入QMainWindow,QApplication

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # Set up the MainWindow from Designer.
        uic.loadUi("mw.ui", self)

        # Connect up the buttons.
        self.pushButton.clicked.connect(self.BtnClck)

        self.show()

    def BtnClck(self):
        # Set up the ContentWindow from Designer.
        from form1 import form1
        form1(self.mn_general)
        self.mn_general.pushButton_2.clicked.connect(form1.BtnClck1) #this works fine

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MainWindow()
    sys.exit(app.exec_())

form1.py

from PyQt5 import uic

class form1:
    def __init__(self, obj):
        super().__init__()
        uic.loadUi("form1.ui", obj)

        obj.pushButton.setText('TextChanged on init') #this works fine
        obj.pushButton.clicked.connect(self.BtnClck1) #this NOT works
        obj.pushButton.click() #this works fine!

    def BtnClck1(self):
        print('SecondWindowPrint')

MainWindow.mn_general.pushButton_2調用form1.BtnClck1作為靜態函數。 尚不清楚,但可以。 如果對您有利,則可以將form1.BtnClck1定義為靜態函數:

class form1:
def __init__(self, obj):
    ...........

@staticmethod
def BtnClck1():
    print('SecondWindowPrint')

另一種方法(更好的方法)是將form1類的實例放在MainWindow類的公共變量中。 您可以像這樣在Index.py中更改BtnClck函數:

    def BtnClck(self):
    # Set up the ContentWindow from Designer.
    from form1 import form1
    self.Form=form1(self.mn_general,5)
    self.mn_general.pushButton_2.clicked.connect(form1.BtnClck1) #this works fine

暫無
暫無

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

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