2014-07-09 28 views
7

Korzystam z następującego kodu, aby połączyć QMenu z QPushButton. Po kliknięciu przycisku pojawia się menu rozwijane z wieloma pozycjami podmenu.Jak zmienić tekst i kolor tła QPushButton

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') 

Teraz w zależności od stanu Chciałbym dostosować QPushButton wyświetlacz, nadając mu kolor tekstu i tła. Poniższy wiersz kodu (który ma zmienić kolor tła) nie ma wpływu na QPushButton podłączone do QMenu.

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

Chciałbym wiedzieć, w jaki sposób zmienić kolor tła QPushButton jak również kolor Buttona tekstowego.

+0

Niektóre niespójne z twoim kodem: ToolButtonSizePolicy nie jest zdefiniowana i tylko QToolButtons ma setPopupMode, a nie QPushButtons. Dla arkusza stylów nie ma znaczenia, czy jest to QToolButton czy QPushButton. Twój arkusz stylów powinien zadziałać. – Trilarion

Odpowiedz

15

Oprócz pewnych niespójności ze swoim przykładzie kodu ustawienie koloru tła i koloru tekście QPushButton współpracuje tylko z:

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

przykład (przy użyciu 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_() 

skutkuje:

enter image description here