首页 > Python GUI编程 阅读数:27

PyQt三个窗口基类(QMainWindow、QWidget、QDialog)

本节主要介绍 Qt 中用来创建窗口的 3 个基类(QMainWindow、QWidget 和 QDialog)。

1.QMainWindow类

QMainWindow 类提供一个主应用程序窗口。QMainWindow 类经常被继承,使得封装中央部件、菜单、工具条、状态栏等变得很容易。

QMainWindow类中比较重要的方法如下:
  • addToolBar():添加工具栏;
  • centralWidget():返回窗口中心的一个控件,未设置时返回NULL;
  • menuBar():返回主窗口的菜单栏;
  • setCentralWidget():设置窗口中心的控件;
  • setStatusBar():设置状态栏;
  • statusBar():获得状态栏对象后,调用状态栏对象的 showMessage(message,int timeout=0)方法显示状态栏信息。其中,第一个参数是要显示的状态栏信息;第二个参数是状态栏信息停留的时间,单位是毫秒,默认值是0,表示一直显示状态栏信息。

【例 1】窗口的详细创建。具体代码如下:
import sys
from PyQt5.QtWidgets import QMainWindow , QApplication
from PyQt5.QtGui import Qlcon
class MainWidget(QMainWindow):
    def __init__(self,parent=None):
        super(MainWidgetf,self).__init__(parent)
        #设置主窗口标签
        seif.setWindowTitle("QMainWindow 例子")
        self.resize(400, 200)
        self.status = self.statusBar(www.boshenyl.cn )
        self.status.showMessage("这是状态栏提示", 5000)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon("www.yszxll.cn//images/cartoonl.ico"))
    main = MainWidget(www.mhylpt.com/)
    main.show()
    sys.exit(app.exec_())

【例 2】窗口的移动和关闭。具体代码如下:
import sys
from PyQt5.QtWidgets import
QDesktopWidget, QMainWindow, QHBoxLayout, QPushButton, QApplication, QWidget
class WinForm(QMainWindow):
    def __init__(self, parent=None):
        super(WinForm, self).__init__(parent)
        self.setWindowTitle('调整窗口位置和关闭窗口')
        self.resize(370,250)
        self.center(www.wanmeiyuele.cn)
        self.button1 = QPushButton ('关闭主窗口')
        self.button1.clicked.connect(self.onButtonClick)
        layout = QHBoxLayout()
        layout.addWidget(self.button1)
        main_frame = QWidget()
        main_frame.setLayout(layout)
        self.setCentralWidget(main_frame)
    def center(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry (www.caibaoyule.cn )
self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)
    def onButtonClick(self):
        sender = self.sender()
        print(sender.text(www.jyz521.com/) + '被单击了' )
        qApp = QApplication.instAnce()
        qApp.quit(www.365soke.cn)
if __name__ == '__main__':
    app = QApplication(sys.mrgv)
    form = WinForm()
    form.show()
    sys.exit(app.exec_())

2.QWidget类

QWidget 类是所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标、键盘和其他消息,并在屏幕上绘制自己。一个窗口部件可以被它的父窗口或其他窗口挡住一部分。
QWidget 类直接提供的成员函数:x( )、y( ) 用于获取窗口左上角的坐标,width( )、height( ) 用于获取窗口的宽度和高度。

QWidget 类中的 frameGeometry( ) 方法提供的成员函数:x( )、y( ) 用于获取客户区左上角的坐标,width()、height( ) 用于获取客户区的宽度和高度。

QWidget 类中的 frameGeometry( ) 方法提供的成员函数:x( )、y( ) 用于获取窗口左上角的坐标,width( )、height( ) 用于获取包含客户区、标题栏和边框在内的整个窗口的宽度和高度。

3.QDiaIog类

QDialog 类是对话框窗口的基类。对话框窗口是主要用于短期任务和用户进行短期通信的顶级窗口。QDialog 可以是模态对话框或非模态对话框。QDialog 支持扩展并带有返回值,并且可以带有默认值。

QDialog 类的子类主要有 QMessageBox、QFileDialog、QFontDialog、QInputDialog、QColorDialog、QErrorMessage、QProgressDialog、QTabDialog、QWizard 等。