首页 > Python GUI编程
阅读数:27
PyQt三个窗口基类(QMainWindow、QWidget、QDialog)
本节主要介绍 Qt 中用来创建窗口的 3 个基类(QMainWindow、QWidget 和 QDialog)。
QMainWindow类中比较重要的方法如下:
【例 1】窗口的详细创建。具体代码如下:
【例 2】窗口的移动和关闭。具体代码如下:
QWidget 类直接提供的成员函数:x( )、y( ) 用于获取窗口左上角的坐标,width( )、height( ) 用于获取窗口的宽度和高度。
QWidget 类中的 frameGeometry( ) 方法提供的成员函数:x( )、y( ) 用于获取客户区左上角的坐标,width()、height( ) 用于获取客户区的宽度和高度。
QWidget 类中的 frameGeometry( ) 方法提供的成员函数:x( )、y( ) 用于获取窗口左上角的坐标,width( )、height( ) 用于获取包含客户区、标题栏和边框在内的整个窗口的宽度和高度。
QDialog 类的子类主要有 QMessageBox、QFileDialog、QFontDialog、QInputDialog、QColorDialog、QErrorMessage、QProgressDialog、QTabDialog、QWizard 等。
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 等。