PyQt5:窗口风格以及QComboBox类setMaxVisibleItems()不生效的解决

窗口风格

获取窗口风格

	# 当前系统环境: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/

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值