如何向基于PySide的ui添加状态

2024-04-29 14:41:47 发布

您现在位置:Python中文网/ 问答频道 /正文

看看代码

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

现在我只想添加一个状态。现在状态在中可用QtGui.QMainWindow 我如何利用这个事实把它添加到上面的程序中?在pyside编码中,似乎对于每个组件,我们都需要创建一个类,并将一些连接到主类……这里的理论是什么?在

我这样试过,但没用。在

^{pr2}$

Tags: 代码fromimportselfappinit状态sys
2条回答

{如果你想要一个工具条,也可以使用一个工具条。其他小部件没有这些内置特性,因此,很自然地,它们没有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_())

不需要为每个组件创建一个类,但是如果要修改/重写每个组件的内置函数,则需要为其创建一个类。在

要向主窗口添加内容,只需创建一个对象并将其添加到布局中。具体如下:

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

相关问题 更多 >