2014-07-09 35 views
7

Ich verwende folgenden Code, um QMenu zu QPushButton zu verbinden. Wenn auf die Schaltfläche geklickt wird, wird ein Pulldown-Menü mit mehreren Elementen des Untermenüs angezeigt.Wie ändere ich QPushButton Text und Hintergrundfarbe

button=QPushButton() 
button.setText("Press Me") 

font=QtGui.QFont() 
button.setFont(font) 
button.setSizePolicy(ToolButtonSizePolicy) 

button.setPopupMode(QtGui.QToolButton.InstantPopup) 
menu=QtGui.QMenu() 
button.setMenu(menu) 

menuItem1=menu.addAction('Menu Item1') 
menuItem2=menu.addAction('Menu Item2') 

abhängig nun von einer Bedingung würde ich QPushButton Anzeige anpassen möchten, indem sie einen Text und Hintergrundfarbe zu geben. Die folgende Codezeile (die die Hintergrundfarbe ändern soll) hat keine Auswirkung auf QPushButton, die mit QMenu verbunden ist.

button.setStyleSheet('QPushButton {background-color: #A3C1DA}') 

Ich mag würde wissen, wie die Hintergrundfarbe von QPushButton sowie der Schaltfläche Farbe des Textes zu ändern.

+0

Inkonsistenzen mit Ihrem Code: ToolButtonSizePolicy ist nicht definiert und nur QToolButtons haben setPopupMode, nicht QPushButtons. Für das Stylesheet ist es egal, ob es ein QToolButton oder ein QPushButton ist. Dein Stylesheet hätte funktionieren sollen. – Trilarion

Antwort

15

Abgesehen von einigen Unstimmigkeiten mit Ihrem Code Beispiel die Hintergrundfarbe und Textfarbe eines QPushButton funktioniert gut mit der Einstellung:

setStyleSheet('QPushButton {background-color: #A3C1DA; color: red;}') 

Beispiel (unter Verwendung von pyside):

from PySide import QtGui 

app = QtGui.QApplication([]) 

button = QtGui.QPushButton() 
button.setStyleSheet('QPushButton {background-color: #A3C1DA; color: red;}') 
button.setText('Press Me') 
menu = QtGui.QMenu() 
menuItem1 = menu.addAction('Menu Item1') 
menuItem2 = menu.addAction('Menu Item2') 

button.setMenu(menu) 
button.show() 

app.exec_() 

Ergebnisse in:

enter image description here

Verwandte Themen