4

在学习了 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。那么我究竟如何才能同时使用这两个类呢?一个人必须从另一个人那里继承一些东西吗?对不起,如果这可能很笨拙并且有很多错误,但如果你能帮助我,谢谢!

4

2 回答 2

5

您需要实例化一个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()
于 2013-03-20T20:10:18.933 回答
0

一个 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-03-20T20:32:43.040 回答