我对 Qt 和 python 都很陌生。对于大多数人来说,这可能是一个简单的问题,但我在谷歌上找不到它。 我有一个表单,其中包含不同组的“路径和按钮”组合。 单击每个路径将打开 QFileDialog.getOpenFileName() 对话框,并将 Text 设置为 lineEdit。
我的问题是如何编写这样的函数:
QtCore.QObject.connect(btn1, QtCore.SIGNAL("clicked()"), set_widge_text(lineEdit1))
QtCore.QObject.connect(btn2, QtCore.SIGNAL("clicked()"), set_widge_text(lineEdit2))
QtCore.QObject.connect(btn3, QtCore.SIGNAL("clicked()"), set_widge_text(lineEdit3))
在函数中:
def set_widge_text(self, widget_name)
widget_name.setText("self.fname")
def open_file_dialog(self):
fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file',
'./')
self.fname = fname
有什么办法可以实现这个目标吗?我不想只为不同的 lineEdits 编写不同的 set_widge_text() 集,任何帮助将不胜感激。
非常感谢。
最佳答案
使用lambda
连接信号:
btn1.clicked.connect(lambda: self.set_file_name(lineEdit1))
btn2.clicked.connect(lambda: self.set_file_name(lineEdit2))
btn3.clicked.connect(lambda: self.set_file_name(lineEdit3))
def set_file_name(self, edit):
edit.setText(self.open_file_dialog())
def open_file_dialog(self):
return QtGui.QFileDialog.getOpenFileName(self, 'Open file', './')
关于python - pyqt : How to use a same function to set text of different qt widget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28831487/