【发布时间】:2015-09-26 07:15:40
【问题描述】:
在 QT Designer 中,我定义了一个按钮 loadValues_btn 并将信号pressed() 关联到自定义插槽 loadValues()
然后在 Python 中,使用 PyQt 库加载 .ui 文件后,我在 MainApplication 类中定义了 loadValues() 方法,以便在单击相同按钮时执行自定义代码。但它不执行代码(我只需要打开一个文件选择器对话框)
我已经用 clicked() 试过了,也没用
这是 MainApplication 类代码:
class Main(QMainWindow, Ui_MainWindow):
def __init__(self, ):
super(Main, self).__init__()
self.setupUi(self)
def loadValues():
filePath = QtGui.QFileDialog.getOpenFileName(parent=self, caption='Open file', directory='.')
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())
【问题讨论】:
-
setupUi应该进行连接。如果没有,那么您可以尝试在 Designer 上修复它(确保您定义了正确的连接),或者您可以自己在代码中进行连接。 -
@hyde 我用 PyQt4 生成了 UI 界面后面的 python 代码,在我看来,loadValues 插槽的信号和插槽已正确连接...
-
这里是 Ui_MainWindow 类的 setpUi 中的代码: 'class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize( 803, 476) ... self.loadData_btn = QtGui.QPushButton(self.centralWidget) self.loadData_btn.setGeometry(QtCore.QRect(30, 10, 75, 23)) self.loadData_btn.setObjectName(_fromUtf8("loadData_btn") ) ... QtCore.QObject.connect(self.loadData_btn, QtCore.SIGNAL(_fromUtf8("clicked()")), MainWindow.loadValues) ... ' 我不明白错误在哪里:(
-
我对PyQt了解不多,但是检查应用程序的控制台输出(stderr)是否有连接失败消息,并尝试添加调试打印告诉连接的返回值(应该是真的)。然后你可以编辑问题以在上面的评论中添加内容(并很好地格式化它),这样其他人就更容易看到了。
-
您发布的代码存在缩进错误,并且还会引发
TypeError,因为loadValues缺少self参数。除此之外,似乎没有任何问题。 (PS:如果您在 Qt Designer 中进行更改,请不要忘记重新运行pyuic)。
标签: python-3.x qt-designer qt-signals