窗口风格
获取窗口风格
# 当前系统环境:Windows10
from PyQt5.QtWidgets import QStyleFactory
styles = QStyleFactory.keys() #获取当前系统支持的窗口风格
print(styles)
# ----------输出结果----------
['windowsvista', 'Windows', 'Fusion']
全局应用
方式一:入口处使用
class MyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = ui_main.Ui_Form()
self.ui.setupUi(self) # 引用ui
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyle('Fusion') # 应用【Fusion】风格
form = MyWidget() # 界面逻辑类
form.show()
sys.exit(app.exec_())
方式二:类内部使用
class MyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = ui_main.Ui_Form()
self.ui.setupUi(self) # 引用ui
# self.set_window_style() # 直接调用
styles = QStyleFactory.keys()
self.ui.comboBox.addItems(styles)# 添加可支持风格
self.ui.comboBox.activated[str].connect(self.set_window_style_2)
def set_window_style(self): # 固定样式,直接调用
"""设置窗口风格"""
curr_style = 'Fusion'
QApplication.setStyle(curr_style )
def set_window_style_2(self, style):
"""设置窗口风格"""
QApplication.setStyle(style)
if __name__ == '__main__':
app = QApplication(sys.argv)
form = MyWidget() # 界面逻辑类
form.show()
sys.exit(app.exec_())
局部控件设置风格
# 下拉框单独设置风格
q_style=QStyleFactory.create("windowsvista")
self.ui.comboBox.setStyle(q_style)
setMaxVisibleItems()不生效
设置个别风格后,发现下拉框会显示所有项直到高度布满屏幕高度,即便用了setMaxVisibleItems()限制显示最大行数,依旧无效
# 下拉框最大显示5行
self.ui.comboBox.setMaxVisibleItems(5)
如图:
解决办法
方式一:设置下拉框为常规风格,弊端之处在于如果是不同平台使用程序,就要考虑不同平台下是否支持该风格
q_style=QStyleFactory.create("windowsvista")
self.ui.comboBox.setStyle(q_style)
方式二:在QComboBox控件设置如下样式
# 网站上找到的资料,但未找到这句qss的意义是什么
qss = "QComboBox{combobox-popup:0;}"
self.ui.comboBox.setStyleSheet(qss)
结果如下
参考资料
https://www.freesion.com/article/3556546272/