2017-09-21 8 views
0

Guten Tag, Ich bin kein Programmierer und sicherlich schrecklich mit allem im Zusammenhang mit Python - so entschuldige ich mich, wenn das irgendwie lächerlich ist.Tkinter Ändern OptionMenu Hintergrund?

Der Versuch, eine ziemlich grundlegende Benutzeroberfläche mit einigen Texteinträgen, Beschriftungen und einigen OptionMenus (tkinter) zu erstellen.

Am Versuch, die Hintergrundfarbe des OptionMenu Widget ändern mit

OptionMenu.configure(bg="blue") 

Leider erhalte ich die Fehler

TypeError: configure() missing 1 required positional argument: 'self'

Von dem, was ich gelesen habe, die Menschen bekommen diese, wenn sie sind etwas in einer Klasse fehlt oder die Klasse instanziiert. Ich habe nicht nur keine Ahnung, was das bedeutet, ich erstelle auch keine Klassen. Zumindest nicht, dass ich mir dessen bewusst bin.

Irgendeine Idee, warum ich diesen Fehler bekommen würde und wie man es repariert? Ich weiß, ich habe VIEL größere Fische zu braten (wie die Werte zu verwenden, nachdem sie in den Textfeldern eingegeben werden), aber Babyschritte ...

Oh, und wenn es darauf ankommt, verwende ich Python 3.6 und Spyder. Danke!

+0

Sie müssen die '.configure()' Methode auf Ihre speziellen OptionMenu nennen, nicht die 'OptionMenu' Klasse selbst. – jasonharper

+0

Das hat es getan ... vielen Dank! Seltsam, dass es wieder in das Standardgrau zurückkehrt, wenn die Maus darüber läuft, aber das ist keine große Sache. Wirklich zu schätzen, Ihre Hilfe –

+0

Es ist 'bg', nicht' bf' ... Beachten Sie, dass Ihr Code-Fragment ist gebrochen: es weist 'C1' das Ergebnis des Aufrufs' .configure() '(was' None') NICHT das OptionMenu selbst. Aber Sie können Konfigurationsoptionen direkt in die Erstellung des Widgets einfügen: versuchen Sie 'C1 = OptionMenu (root, variable1, * optionsx, bg =" blue ")' – jasonharper

Antwort

0

Wie von Jason in den obigen Kommentaren angegeben, müssen Sie .configure() für das Objekt verwenden, das Sie nicht die Klasse konfigurieren möchten.

Siehe unten:

from tkinter import * 

root = Tk() 

var = StringVar(root) 
var.set(1) 

array = [1, 2, 3] 

option = OptionMenu(root, var, *array) 
option.configure(background="white") 

option.pack() 

Zusätzlich Sie activebackground das Attribut können Sie die Farbe des Hintergrundes nach dem ersten Klick auf den `OptionMenu konfigurieren, kann dies wie unten erfolgen:

from tkinter import * 

root = Tk() 

var = StringVar(root) 
var.set(1) 

array = [1, 2, 3] 

option = OptionMenu(root, var, *array) 
option.configure(background="white", activebackground="white") 

option.pack() 

Wenn Sie aus Konsistenzgründen noch weiter gehen möchten, können Sie auch die Hintergrundfarbe "Dropdown-Menü" konfigurieren, indem Sie den Objektschlüssel menu aufrufen. Dies kann wie unten erfolgen:

from tkinter import * 

root = Tk() 

var = StringVar(root) 
var.set(1) 

array = [1, 2, 3] 

option = OptionMenu(root, var, *array) 
option.configure(background="white", activebackground="white") 
option["menu"].configure(bg="white") 

option.pack() 
+0

Das sind alles wirklich tolle und hilfreiche Informationen - vielen Dank nochmal! –

+0

Wenn dies Ihre Frage beantwortet, können Sie sie als akzeptiert markieren, damit zukünftige Benutzer eine Antwort auf ähnliche Fragen finden können. –

Verwandte Themen