博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt5之窗口风格
阅读量:3959 次
发布时间:2019-05-24

本文共 3069 字,大约阅读时间需要 10 分钟。

PyQt5之窗口风格

使用PyQt实现的窗口样式,默认使用的就是当前操作系统的原生窗口样式。如果其他Widget没有设置QStyle,则默认使用QApplication设置的QStyle。

一、设置窗口控件的风格

setStyle(QStyle style) #可以为每个Widget都设置风格
QStyleFactory.keys() #获得当前平台支持的原有的QStyle样式
QApplication.setStyle(QStyleFactory.create("WindowsXP")) #对QApplication设置QStyle样式

范例:

import sysfrom PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Demo(QWidget):    def __init__(self):        super().__init__()        self.setWindowTitle('设置窗口控件的风格')        layout = QHBoxLayout(self)        self.label = QLabel("Set Style:")        self.combobox = QComboBox()        self.combobox.addItems(QStyleFactory.keys())#增加多个显示样式        index = self.combobox.findText(QApplication.style().objectName(),QtCore.Qt.MatchFixedString)#获取当前窗口风格        self.combobox.setCurrentIndex(index)#设置当前窗口风格        self.combobox.activated[str].connect(self.stylechange)#设置槽函数,当Comobox中值改变时,窗口风格也随之改变        layout.addWidget(self.label)        layout.addWidget(self.combobox)    def stylechange(self,style):        QApplication.setStyle(style)if __name__ == "__main__":    app = QApplication(sys.argv)    form = Demo()    form.show()    sys.exit(app.exec_())

运行效果如下:

在这里插入图片描述


二、设置窗口样式

  • PyQt有如下几种基本的窗口类型:
  1. Qt.Widget,默认窗口,有最小化、最大化、关闭按钮;
  2. Qt.Window,普通窗口,有最小化、最大化、关闭按钮;
  3. Qt.Dialog,对话框窗口,有问号和关闭按钮;
  4. Qt.Popup,弹出窗口,窗口无边框;
  5. Qt.ToolTip,提示窗口,窗口无边框,无任务栏;
  6. Qt.SplashScreen,闪屏,窗口无边框,无任务栏;
  7. Qt.SubWindow,子窗口,窗口无按钮,但有标题。
  • 自定义顶层窗口外观标志:
  1. Qt.MSWindowsFixedSizeDialogHint,窗口无法调整大小;
  2. Qt.FramelessWindowHint,窗口无边框;
  3. Qt.CustomizeWindowHint,有边框但无标题栏和按钮,不能移动和拖动;
  4. Qt.WindowTitleHint,添加标题栏和一个关闭按钮;
  5. Qt.WindowSystemMenuHint,添加系统目录和一个关闭按钮;
  6. Qt.WindowMaximizeButtonHint,激活最大化和关闭按钮,禁止最小化按钮;
  7. Qt.WindowMinimizeButtonHint,激活最小化和关闭按钮,禁止最大化按钮;
  8. Qt.WindowMinMaxButtonsHint,激活最大化、最小化按钮和关闭按钮;
  9. Qt.WindowCloseButtonHint,添加一个关闭按钮;
  10. Qt.WindowContextHelpButtonHint,添加问号和关闭按钮,像对话框一样;
  11. Qt.WindowStaysOnTopHint,窗口始终处于顶层位置;
  12. Qt.WindowStaysOnBottomHint ,窗口始终处于底层位置。
import sysfrom PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Demo(QMainWindow):    def __init__(self):        super().__init__()        self.resize(400,200)        self.setWindowTitle('设置窗口样式')        self.setWindowFlags(Qt.FramelessWindowHint)#设置无边框窗口样式if __name__ == "__main__":    app = QApplication(sys.argv)    form = Demo()    form.show()    sys.exit(app.exec_())

运行效果如下:

在这里插入图片描述


使用自定义的无边框窗口:

import sysfrom PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Demo(QMainWindow):    def __init__(self):        super().__init__()        self.resize(400,200)        self.setWindowTitle('设置窗口样式')        self.setWindowFlags(Qt.FramelessWindowHint)#设置无边框窗口样式        self.setStyleSheet('background-color:pink;')#采用CSS将窗口设置粉红色    def showMaximized(self):        desk = QApplication.desktop()#得到桌面控件        rect = desk.availableGeometry()#得到屏幕可显示尺寸        self.setGeometry(rect)#设置窗口尺寸        self.show()#显示窗口if __name__ == "__main__":    app = QApplication(sys.argv)    form = Demo()    form.showMaximized()#调用最大化显示窗口    sys.exit(app.exec_())

运行效果如下:

在这里插入图片描述

转载地址:http://mtozi.baihongyu.com/

你可能感兴趣的文章
理解套接字recv(),send()
查看>>
发一个C++写的跨平台的BlockingQueue
查看>>
Linux TCP/IP协议栈剖析【体系结构篇】
查看>>
游戏开发中预防内存泄露的一些措施
查看>>
以前的文章全部移除了。
查看>>
几首歌
查看>>
蝴蝶泉边
查看>>
编码转换
查看>>
freerice
查看>>
Does your mother know
查看>>
《写出质量好软件的75条体会》暨答案ZT [转自monkyy的blog]
查看>>
关于详细设计
查看>>
POJ2838,Sliding Window(单调队列)
查看>>
牛客练习赛50,B tokitsukaze and Hash Table(STL+输入输出挂)
查看>>
POJ3728,The merchant(倍增LCA+分治)
查看>>
2019 ICPC Malaysia National,E. Optimal Slots(01背包变形)
查看>>
洛谷P1638 逛画展(双向队列)
查看>>
牛客练习赛51,D(二分图匹配)
查看>>
POJ2892,Tunnel Warfare(线段树维护连续区间)
查看>>
POJ3468,A Simple Problem with Integers(线段树-区间查询-区间更新)
查看>>