如何

2014-04-16 32 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_())