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_())

ボタンとステータス バーを 1 つのウィンドウに表示する場合は、すべてのウィジェットを次の場所に配置し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 には QWidget と 1 つの 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 に答える