首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt4应用程序按钮不工作

PyQt4应用程序按钮不工作
EN

Stack Overflow用户
提问于 2013-02-22 20:25:38
回答 1查看 1.4K关注 0票数 1

我正在尝试使用PyQt4 designer在Linux中设置一个应用程序,但我正在努力将信号和插槽连接到它。现在,我要做的就是将一个按钮clicked信号连接到一个自定义插槽saveEnergyScheme,它只需将“能源列表”打印到终端即可。

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

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
from PyQt4 import QtGui, QtCore
from sumcorr_ui import SumCorr_ui

class SumCorr(SumCorr_ui):

    def __init__(self):
        SumCorr_ui.__init__(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 = QtGui.QMainWindow()
    ui = SumCorr()
    ui.setupUi(mySumCorr)
    mySumCorr.show()
    sys.exit(app.exec_())

当我单击名为save_energies_button的按钮时,我希望看到“能源列表”行,但什么也没有发生。这是不是因为我没有将UI构建为一个小部件,而是作为一个主窗口?为什么不打印出来??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 20:44:36

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

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

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

代码语言:javascript
复制
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布局的抽象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15024213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档