【问题标题】:multiple classes in PyQt4PyQt4 中的多个类
【发布时间】:2013-03-10 03:24:55
【问题描述】:

在学习了 Python 基础知识之后,我现在正在使用 PyQt4 在 GUI 中尝试自己。不幸的是,我现在一直在搞清楚如何使用多个课程,并且在花了很多时间试图在线获得答案并且没有真正找到正确答案之后,我希望你现在可以帮助我。

这是我的示例代码:

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        self.b1 = QtGui.QPushButton("Button", self)
        self.b1.move(100,100)


        self.setGeometry(300,300,200,200)
        self.setWindowTitle("Example")
        self.show()

class Bar(QtGui.QMainWindow):

    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.initUI()

    def initUI(self):

        self.statusBar().showMessage("Statusbar")


def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec())

if __name__ == "__main__":
    main()

现在只显示“Example”类中的 Button,但不显示“Bar”类中的 statusBar。那么我究竟如何才能同时使用这两个类呢?一个人必须从另一个人那里继承一些东西吗?对不起,如果这可能很笨拙并且有很多错误,但如果你能帮助我,谢谢!

【问题讨论】:

    标签: python class inheritance python-3.x pyqt4


    【解决方案1】:

    你需要实例化一个Bar对象,并调用它的show方法:

    def main():
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        bar = Bar()
        bar.show()
        sys.exit(app.exec_())
    

    如果你想让按钮和状态栏在一个窗口中,把所有的小部件放在QMainWindow

    import sys
    from PyQt4 import QtGui, QtCore
    
    class Bar(QtGui.QMainWindow):
    
        def __init__(self):
            QtGui.QMainWindow.__init__(self)
            self.initUI()
    
        def initUI(self):
            self.setGeometry(300,300,200,200)
            self.b1 = QtGui.QPushButton("Button", self)
            self.b1.move(100,100)
            self.setWindowTitle("Example")
            self.statusBar().showMessage("Statusbar")
    
    def main():
        app = QtGui.QApplication(sys.argv)
        bar = Bar()
        bar.show()
        sys.exit(app.exec_())
    
    if __name__ == "__main__":
        main()
    

    【讨论】:

    • 不知道为什么,但这会打开第二个窗口,底部有一个“StatusBar”标签,但也没有状态栏,我实际上希望状态栏与 QWidget 位于同一窗口?
    • 我不确定您所说的没有状态栏是什么意思。 (警告:我对 Qt 不是很了解...)
    • 不,这只是我的一个错误,很抱歉造成混乱。您的示例有效,非常感谢!
    【解决方案2】:

    一个QMainWindow 有QWidgets 和一个QStatusBar,一个QWidget 没有QStatusBar。您需要修复继承树。

    import sys
    from PyQt4 import QtCore, QtGui
    
    class Example(QtGui.QMainWindow):
        def __init__(self, parent=None):
            super(Example, self).__init__(parent)
            self.statusBar().showMessage("howdy stackoverflowers!!")
    
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        ex.show()
        sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 2017-03-06
      • 2011-05-28
      相关资源
      最近更新 更多