Skip to main content
 首页 » 编程设计

pythonPyQt4:QWidget 和 QMainWindow 的区别

2023年05月27日21lyj

阅读 PyQt4 教程时,有时示例使用 QtGui.QMainWindow,有时使用 QtGui.QWidget

问题:您如何判断何时使用哪个?

import sys 
from PyQt4 import QtGui 
 
 
class Example(QtGui.QMainWindow): 
 
    def __init__(self): 
        super(Example, self).__init__() 
 
        self.initUI() 
 
    def initUI(self):                
 
        self.statusBar().showMessage('Ready') 
 
        self.setGeometry(300, 300, 250, 150) 
        self.setWindowTitle('Statusbar')     
        self.show() 
 
 
def main(): 
 
    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 
 
 
if __name__ == '__main__': 
    main() 

另一个代码示例:

import sys 
from PyQt4 import QtGui, QtCore 
 
class Example(QtGui.QWidget): 
 
    def __init__(self): 
        super(Example, self).__init__() 
 
        self.initUI() 
 
    def initUI(self):       
 
        cb = QtGui.QCheckBox('Show title', self) 
        cb.move(20, 20) 
        cb.toggle() 
        cb.stateChanged.connect(self.changeTitle) 
 
        self.setGeometry(300, 300, 250, 150) 
        self.setWindowTitle('QtGui.QCheckBox') 
        self.show() 
 
    def changeTitle(self, state): 
 
        if state == QtCore.Qt.Checked: 
            self.setWindowTitle('QtGui.QCheckBox') 
        else: 
            self.setWindowTitle('') 
 
def main(): 
 
    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 
 
 
if __name__ == '__main__': 
    main() 

请您参考如下方法:

QMainWindow 是一个理解 GUI 元素的类,例如

  • 工具栏,
  • 状态栏,
  • 中央小部件,
  • 停靠区。

QWidget 只是一个原始小部件。

如果你想为你的项目创建一个主窗口,请使用 QMainWindow

如果你想创建一个对话框(模态对话框),使用QWidget,或者,更好的是,QDialog