在PyQt5中,窗口类型有QWidget、QMainWindow和QDialog三类,它们都是用来创建窗口的,可以直接实例化使用,也可以继承后使用。
如果确定是主窗口,就使用QMainWindow类,如果是对话框,就使用QDialog类,如果不确定,否则使用QWidget类。
基本窗口
QWidget类是UI对象的基类,窗口和控件(如按钮)都直接或间接继承自QWidget类。窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮等。一个程序可以有多个窗口,一个窗口可以有多个控件。QWidget对象的常用方法如下:
方法 | 描述 |
setWindowState() | 调整窗口启动时的状态。WindowMinimized窗口最小化、WindowMaximized窗口最大化,WindowFullScreen全屏显示; |
showFullScreen() | 全屏显示窗口,用isFullScreen()方法可判断是否全屏; |
showMaximized() | 最大化显示窗口, 用isMaximized()可判断是否最大化窗口; |
showMinimized() | 最小化显示窗口,用isMinimized()可判断是否最小化; |
resize(width,heigth) | 调整窗口大小,width是宽度,heigth是高度,可拖拉改变大小; |
setFixedSize(int width,int height) | 调整窗口大小,不可拖拉改变大小; |
setGeometry(int x, int y, int width, int height) | 同时改变窗口大小和位置,x、y为坐标值,width为宽度,height为高度; |
frameGeometry() | 获得窗口的大小和位置; |
move(int x,int y) | 移动窗口的位置到x、y坐标; |
pos() | 获得窗口左上角的坐标; |
setStyleSheet() | 用QSS调整控件的样式。QSS称为Qt Style Sheets也就是Qt样式表,它是Qt提供的一种用来自定义控件外观的机制。QSS参考了CSS的内容,只不过QSS的功能要比CSS弱很多。QSS的语法规则几乎与CSS相同。不知CSS的,请自行上网查询并学习一下,如果实在不想学,那就用QPalette好了; |
setPalette() | 用QPalette调整控件的样式。设置背景图片时,需要考虑背景图片的尺寸,当背景图片的宽度和高度大于窗口的宽度和高度时,背景图片将会平铺整个窗口;当背景图片的宽度和高度小于窗口的宽度和高度时,则加载多个背景图片。用QPalette调整控件的样式。如果有父窗口,需要调用self.setAutoFillBa ckground(True)方法,同时不要用到self.setStyleSheet(''”),否则self.setPalette()没有作用。 |
setWindowFlags() | 用于调整窗口样式,值为FramelessWindowHint时,为没有边框的窗口; |
CustomizeWindowHint用|符合和如下属性搭配使用。
方法 | 描述 |
MSWindowsFixedSizeDialogHint | 无边框,不可拖动,也不可调整窗口大小; |
WindowTitleHint | 有边框和一个标题栏; |
WindowSystemMenuHint | 无边框,不可拖动,也不可调整窗口大小; |
WindowMaximizeButtonHint | 激活最大化,禁用最小化和关闭按钮; |
WindowMinimizeButtonHint | 激活最小化,禁用最大化按钮和关闭按钮; |
WindowCloseButtonHint | 激活关闭,禁用最大化和最小化按钮; |
WindowMinMaxButtonsHint | 激活最大化、最小化按钮,禁用关闭按钮; |
WindowStaysOnTopHint | 窗口始终处于顶层位置; |
WindowStaysOnBottomHint | 窗口始终处于底层位置。 |
程序清单:widget.py
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor
# 继承QWidget
class Widget(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 调整窗口大小
self.resize(900, 500)
# 窗口居中
self.center()
# 窗口标题
self.setWindowTitle("窗口定义")
# 激活关闭按钮,禁用最大化和最小化按钮
self.setWindowFlags(Qt.CustomizeWindowHint |
Qt.WindowCloseButtonHint)
# 设置背景色为白色
palette = self.palette()
palette.setColor(self.backgroundRole(), QColor(255, 255, 255))
self.setPalette(palette)
# 显示窗口
self.show()
# 实现居中
def center(self):
f = self.frameGeometry()
c = QDesktopWidget().availableGeometry().center()
f.moveCenter(c)
self.move(f.topLeft())
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Widget()
sys.exit(app.exec_())
运行程序之后,弹出的窗口如下:
好了,基本窗口的内容就说到这了,关注我,下一节更精彩。
码字不易,你的关注和转发是对我最大的鼓励,谢谢!
一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!