【发布时间】:2015-03-14 12:48:56
【问题描述】:
运行下面的示例代码会创建一个按钮窗口。单击该按钮会弹出一个下拉菜单。
当 CSS 'appStyle' 直接应用于 menu 时,它似乎运行良好:
menu.setStyleSheet(appStyle)
但是当使用相同的 CSS 'appStyle' 分配给整个窗口时:
view.setStyleSheet(appStyle)
什么都没有发生(只需注释掉menu.setStyleSheet(appStyle) 即可查看)。
如果 CSS 样式表对整个视图只有一次,而不是对每个菜单或每个小部件单独使用,那就太好了。如何实现?
bgColor='#1F1F1F'
appStyle="""
QMenu {{ font-size:10pt; selection-background-color: #ffaa00; selection-color: black; background-color: #7A7A7A; border-style: solid; border: 0px solid #EBEBEB; border-radius: 0; color: #EBEBEB; padding: 0px 0px 0px 0px; }}
QMenu:on {{padding-top: 0px; padding-left: 0px; background-color: #7A7A7A; selection-background-color: #ffaa00; color: #EBEBEB; border-radius: 0;}}
QMenu QAbstractItemView {{ border: 0px solid black; background-color: #7A7A7A; color: #EBEBEB; border-radius: 0; }}
QMenu:hover {{ border: 0px solid #ffa02f; }}
QMenu::drop-down {{ border-radius: 0px; background-color: #7A7A7A; color: #EBEBEB; }}""".format(bgColor)
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
button=QToolButton(self)
button.setText('Click Here')
menu=QMenu()
menu.addAction("Action01")
menu.addAction("Action02")
menu.addAction("Action03")
separator=menu.addAction("")
separator.setSeparator(True)
subMenu=menu.addMenu('SubMenu')
subMenu.addAction("SubAction01")
subMenu.addAction("SubAction02")
subMenu.addAction("SubAction03")
button.setMenu(menu)
button.setPopupMode(QToolButton.InstantPopup)
menu.setStyleSheet(appStyle)
app=QApplication(sys.argv)
view=Window()
view.setStyleSheet(appStyle)
view.show()
sys.exit(app.exec_())
【问题讨论】:
标签: python css qt pyqt stylesheet