2017-02-13 381 views
0

我试图找到一种方法来设置不同颜色的菜单项。PyQT QAction/QMenu颜色

Menu Items

因此,举例来说,网络指南是蓝色的,电子邮件支持是红色的,1.0版是透明的。

我看了一会儿,想了解如何做到这一点,并试用了Qlabel和QWidgetAction,但这似乎只是作为文本,而不像动作一样。

我有一种感觉,这是更痛苦,那么它是值得的,但是我以为我会把它扔在那里一切。

这是我怎么有样式表和操作设置:

self.setStyleSheet(""" 
     QMenuBar { 
      background-color: rgb(49,49,49); 
      color: rgb(255,255,255); 
      border: 1px solid ; 
     } 

     QMenuBar::item { 
      background-color: rgb(49,49,49); 
      color: rgb(255,255,255); 
     } 

     QMenuBar::item::selected { 
      background-color: rgb(30,30,30); 
     } 

     QMenu { 
      background-color: rgb(49,49,49); 
      color: rgb(255,255,255); 
      border: 1px solid ; 
     } 

     QMenu::item::selected { 
      background-color: rgb(30,30,30); 

     } 
    """) 

    self.XactionHelpFAQ = QtGui.QAction('Web Guide', self) 
    self.XactionHelpEmail = QtGui.QAction('Email Support', self) 
    self.XactionHelpVersion = QtGui.QAction('Version 1.0', self) 

    self.Xmenubar = QtGui.QMenuBar(self) 
    self.Xmenubar.setObjectName('menubar') 
    self.Xmenubar.setGeometry(QtCore.QRect(0, 0, 684, 21)) 
    self.Xmenubar.setSizeIncrement(QtCore.QSize(0, 0)) 
    self.Xmenubar.setDefaultUp(False) 

    self.XmenuHelp = QtGui.QMenu('Help', self.Xmenubar) 
    self.XmenuHelp.addAction(self.XactionHelpFAQ) 
    self.XmenuHelp.addAction(self.XactionHelpEmail) 
    self.XmenuHelp.addAction(self.XactionHelpVersion) 
+1

样式表,你申请样式表添加到包含MenuBar和Menu的Widget,但不包含“self.Xmenubar”和“self.XmenuHelp”对象。尝试使用'self.Xmenubar.self.setStyleSheet(...)'和'self.XmenuHelp.setStyleSheet(...)'。为了改进你的代码,你可以简单地将整个样式表设置为你的'QApplication'对象,这样你就可以确定你的样式表应用于所有Qt对象。 – SyedElec

+0

良好的通话,现在我的第二个窗口没有相同的菜单栏样式表:) 谢谢,这是真正的烦人的这个用户界面的东西。 –

+0

是的,我确认:) – SyedElec

回答

1

如果你想申请一个样式表,你需要把它在你的“风格”的小部件。

self.Xmenubar = QtGui.QMenuBar(self) 
[...] 
self.Xmenubar.setStyleSheet(""" 
    QMenuBar { 
     background-color: rgb(49,49,49); 
     color: rgb(255,255,255); 
     border: 1px solid ; 
    } 

    QMenuBar::item { 
     background-color: rgb(49,49,49); 
     color: rgb(255,255,255); 
    } 

    QMenuBar::item::selected { 
     background-color: rgb(30,30,30); 
    } 
""") 

self.XmenuHelp = QtGui.QMenu('Help', self.Xmenubar) 
[...] 
self.XmenuHelp.setStyleSheet(""" 
    QMenu { 
     background-color: rgb(49,49,49); 
     color: rgb(255,255,255); 
     border: 1px solid ; 
    } 

    QMenu::item::selected { 
     background-color: rgb(30,30,30); 

    } 
""") 

在大多数情况下,你只需要一般的样式表适用于QApplication对象和应用一些特定的样式表Qt的对象,将根据你的代码重写应用到QApplication

+0

谢谢!这使得帮助栏下的所有内容都变成了不同的颜色。我正在寻找一些不同色调的物品,但认为它可能太过虚假。这会很好地做! –

+0

没问题!我建议你打开一个新的问题,显示你需要的截图,我们可以尝试帮助你:)我们从问题和答案中学习。 – SyedElec