PyQt4应用程序按钮不工作

2024-04-25 08:05:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用PyQt4designer在Linux中建立一个应用程序,我正在努力将信号和插槽连接到它。现在我想让它做的就是把一个按钮clicked信号连接到一个自定义插槽,saveEnergyScheme它只是将“能量列表”打印到终端。在

我已经用pyuic4 -w sumcorr.ui > sumcorr_ui.py将我的应用程序的.ui代码转换为一个python类。这在sumcorr_ui.py模块中创建了一个名为SumCorr_ui的类:

class SumCorr_ui(QtGui.QMainWindow, Ui_SumCorr_ui):
    def __init__(self, parent=None, f=QtCore.Qt.WindowFlags()):
        QtGui.QMainWindow.__init__(self, parent, f)

        self.setupUi(self)

然后,我将我的应用程序作为一个自定义小部件,并尝试将一个简单的信号槽连接添加到一个按钮上,以显示它的工作原理:

^{pr2}$

当我单击名为save_energies_button的按钮时,我希望得到'energy list'行,但是什么都没有发生。这可能是因为我没有将UI构建为一个小部件,而是作为一个主窗口?为什么不打印出来??在


Tags: pyself应用程序ui信号init部件按钮
1条回答
网友
1楼 · 发布于 2024-04-25 08:05:48

尝试添加ui.show(),你会发现你的代码创建了两个不同的窗口,一个应该连接信号,另一个没有。这是因为你只显示了mySumCorr窗口,但是你只调用了setupUi,而这个窗口没有连接信号。在

当您创建SumCorr实例时,您正在创建一个窗口并对其进行设置,然后,毫无理由地,ui.setupUi(mySumCorr)将在不连接信号的情况下设置mySumCorr实例,并显示最后一个窗口。在

我相信你的代码应该是这样的:

class SumCorr(QtGui.QMainWindow, Ui_SumCorr_ui):

    def __init__(self):
        SumCorr_ui.__init__(self)
        self.setupUi(self)

        self.save_energies_button.clicked.connect(self.saveEnergyScheme)

    def saveEnergyScheme(self):
        print 'energyList'

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    mySumCorr = SumCorr()
    mySumCorr.show()
    sys.exit(app.exec_())

注意,拥有一个SumCorr_ui类没有任何意义,这是因为Qt是一个UI库,所以您只是引入了一个毫无价值的抽象级别。设计器文件已经为您提供了ui布局的抽象。在

相关问题 更多 >