【问题标题】:Returning a variable in btn.clicked.connect() method in pyqt5 [duplicate]在pyqt5的btn.clicked.connect()方法中返回一个变量[重复]
【发布时间】:2019-11-19 04:54:13
【问题描述】:

我已经通过btn.clicked.connect(initUI)在一个类的init()中调用了一个函数initUI。函数 initUI() 包含一个我想返回给 init 函数的文件名变量。我该怎么做?

我在 initUI() 函数中编写了一个返回语句来返回变量文件名。我接受了这样的变量:btn.clicked.connect(a=initUI)。

class MainWindow(QMainWindow,QWidget):

def __init__(self,parent=None):

     num=btn.clicked.connect(a=self.initUI)
def initUI(self):
    fn="The file Path"
    return fn

【问题讨论】:

    标签: python pyqt5


    【解决方案1】:

    试试看:

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    
    class MainWindow(QMainWindow):  # ,QWidget):
        def __init__(self):
            super().__init__()
    
            centralWidget = QWidget()
            self.setCentralWidget(centralWidget)
    
            self.label = QLabel()        
            self.btn = QPushButton("Button")
            self.btn.clicked.connect(self.initUI)        
    
            layout = QGridLayout(centralWidget)
            layout.addWidget(self.label)
            layout.addWidget(self.btn)
    
        def initUI(self):
            fn = "The file Path"
            self.label.setText(fn)
    #        return fn
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = MainWindow()
        window.show()
        app.exec_()
    

    【讨论】:

    • 所以它起作用了,但是我删除了网格布局部分并使用了一个使用 QLineEdit 而不是标签的文本框,以便我可以将它放置在屏幕上的任何位置。不过谢谢!
    【解决方案2】:

    正如@S.Nick 示例向您展示的那样,您正在以错误的方式进行操作。您将按钮单击重定向到的功能应该处理您需要设置的任何设置,而不是直接将其传回。基本上在类中你需要一个属性来保存这个值

    @property
    def classFilePath(self):
        return self.__FilePathName
    
    @classFileName.setter
    def classFilePath(self, value):
        self.__FilePathName = value
    
    def __init__(self,parent=None):
         num=btn.clicked.connect(self.initUI)
    
    def initUI(self):
        self.classFilePath ="The file Path"
    

    这可能看起来有点额外的工作,但它更容易阅读和以后更容易修改。此外,实际变量并没有公开公开(我这么说是因为如果你知道 Python 中类是如何处理的,你就会知道没有真正的私有变量只是被混淆的变量)。

    【讨论】:

      猜你喜欢
      • 2020-01-11
      • 2013-11-13
      • 2014-12-22
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 2018-08-27
      • 2016-01-24
      • 1970-01-01
      相关资源
      最近更新 更多