2017-02-13 205 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