2013-03-20 24 views
4

學習了Python基礎之後,我現在正在使用PyQt4在GUI中嘗試自己。不幸的是,我現在不知道如何使用多個類,花了很多時間試圖在網上獲得答案,並沒有真正找到正確的答案,我希望你現在可以幫助我。PyQt4中的多個類

所以這是我的示例代碼:

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

現在只能從「示例」類的按鈕顯示出來,但沒有狀態欄從「欄」類。那麼我怎樣才能同時使用這兩個類?一個人是否必須從另一個人身上繼承某些東西?對不起,如果這可能是非常笨拙,並有很多錯誤,但謝謝你,如果你能幫助我!

回答

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() 
+0

不知道爲什麼,但是這會打開第二個窗口蒙山在底部的「狀態欄」標籤,也沒有狀態欄和其實我是想在同一窗口QWidget的一個在狀態欄? – 2013-03-20 20:17:49

+0

我不確定你的意思是沒有狀態欄。 (警告:我不是那種關於Qt的知識...) – unutbu 2013-03-20 20:28:15

+0

不,這只是我的錯誤,對於混淆抱歉。你的例子的作品,非常感謝! – 2013-03-20 20:33:11

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