如何

2014-04-16 100 views
1

看代碼如何

import sys 
from PySide import QtCore, QtGui 


class MyWidget(QtGui.QWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 

     self.quit = QtGui.QPushButton("Quit", self) 
     self.setGeometry(300, 300, 250, 150) 
     self.statusBar().showMessage('Ready') 


app = QtGui.QApplication(sys.argv) 
widget = MyWidget() 
widget.show() 
sys.exit(app.exec_()) 

一個狀態到這個基於PySide UI現在我想做的事情,就是添加一個狀態。現在狀態可用在QtGui.QMainWindow 我如何可以利用這一點,將其添加在上面的程序?在pyside編碼中,似乎對於每個組件,我們需要創建一個類並連接到主類。這裏的理論是什麼?

我想自己這樣說,但沒有奏效。

import sys 
from PySide import QtCore, QtGui 


class MyWidget(QtGui.QWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 

     self.quit = QtGui.QPushButton("Quit", self) 
     self.setGeometry(300, 300, 250, 150) 
     self.statusBar().showMessage('Ready') 
     self.s = MyStatus() 

class MyStatus(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     QtGui.QMainWindow.__init__(self, parent) 

     self.statusBar().showMessage('Ready') 

app = QtGui.QApplication(sys.argv) 
widget = MyWidget() 
widget.show() 
sys.exit(app.exec_()) 

回答

1

你並不需要做一個類每一個組件,但如果你想修改/覆蓋每個組件的內置功能,你需要做的一類吧。

要添加一些你的主窗口中,你只需要創建一個對象,並將其添加到佈局。如下:

import sys 
from PySide import QtGui , QtCore 

class MyStatusBar(QtGui.QStatusBar): 
    def __init__(self, parent=None): 
     super(MyStatusBar, self).__init__(parent) 
    #Override any functions, or define new function for our status bar here 

class MyMainWindow(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     QtGui.QMainWindow.__init__(self, parent) 
     #Set the size of the window 
     self.setMinimumSize(300,300) 
     #Create a status bar, from our OWN class 
     self.status_bar = MyStatusBar(self) 
     self.status_bar.setGeometry(QtCore.QRect(0, 0, 50, 50)) 
     self.status_bar.showMessage('Ready') 
     #Add a simple quit button, from the DEFAULT class 
     self.quit_button = QtGui.QPushButton(self) 
     self.quit_button.clicked.connect(self.close) 
     self.quit_button.setGeometry(QtCore.QRect(100, 100, 100, 35)) 
     self.quit_button.setText("Close") 


#Start the application  
app = QtGui.QApplication(sys.argv) 
top = MyMainWindow() 
top.show() 
app.exec_() 
+0

正常工作......我得到了idea..Thanks .. –

1

如果你想用一個狀態欄的窗口,使用QMainWindow:它有一個內置的(還有一個菜單欄,工具欄,停靠小部件等)。其他小部件沒有這些內置功能,所以很自然地,它們沒有像statusBar方法那樣的東西。如果您堅持以不使用QMainWindow的方式艱難地完成任務,您將不得不自己添加所有這些功能。

雖然我不建議這樣做,讓,這裏是一個簡單的演示,增加了一個狀態欄的QWidget

import sys 
from PySide import QtCore, QtGui 

class MyWidget(QtGui.QWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 

     self.central_widget = QtGui.QWidget(self) 

     self.quit = QtGui.QPushButton("Quit", self) 
     self.setGeometry(300, 300, 250, 150) 

     layout = QtGui.QVBoxLayout(self.central_widget) 
     layout.addWidget(self.quit) 

     self.status = QtGui.QStatusBar(self) 

     layout = QtGui.QVBoxLayout(self) 
     layout.setContentsMargins(0, 0, 0, 0) 
     layout.addWidget(self.widget) 
     layout.addStretch() 
     layout.addWidget(self.status) 

     self.status.showMessage('Ready') 

app = QtGui.QApplication(sys.argv) 
widget = MyWidget() 
widget.show() 
sys.exit(app.exec_())