我通过btn.clicked.connect(initUI)在类的 init ()中调用了函数initUI。函数initUI()包含一个fileName变量,我想返回给 init 函数。我该怎么办?
我已经在initUI()函数中编写了一个return语句来返回变量fileName。我接受了这样的变量: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
答案 0 :(得分:0)
尝试一下:
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_()
答案 1 :(得分:0)
如@ 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中如何处理类,就知道没有真正的私有变量只是被混淆的私有变量。)