Deaktivierter Button Textur entfernen

Fragen zu Tkinter.
Antworten
Duardo
User
Beiträge: 54
Registriert: Mittwoch 2. Juli 2014, 16:56

Wenn ich in Python einen button mit

Code: Alles auswählen

button.configure(state="disabled")
deaktiviere, legt sich so eine arte "Netztextur" darüber, kann ich diese entfernen? Wenn ja wie? Schonmal Danke im voraus.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo Duardo!
Duardo hat geschrieben:Wenn ich in Python einen button mit

Code: Alles auswählen

button.configure(state="disabled")
deaktiviere, legt sich so eine arte "Netztextur" darüber, kann ich diese entfernen? Wenn ja wie? Schonmal Danke im voraus.
Auch wenn ich mir nicht vorstellen kann, weshalb man einen Button verwendet, ihn dann deaktiviert und so aussehen lassen möchte, als wäre er nicht deaktiviert... :D

Du weißt sicherlich, dass beim Deaktivieren die Textfarbe standardmäßig auf die systemtypische Farbe für deaktvierten Text gesetzt wird. Der Wert wird in 'disabledforeground' gespeichert und kann nachträglich überschrieben werden:

Code: Alles auswählen

b["disabledforeground"] = b["foreground"]
Weitere Änderungen wie Overlays sind mir jetzt nicht bekannt, aber bestimmt systemabhängig. Welches Betriebssystem verwendest Du?

Grüße,
Sky
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Duardo
User
Beiträge: 54
Registriert: Mittwoch 2. Juli 2014, 16:56

Ich verwende Python 2.7 auf Windows 7.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Duardo hat geschrieben:Ich verwende Python 2.7 auf Windows 7.
Dasselbe wie ich, und bei mir ist der Button (auf den ersten Blick) im aktivierten Zustand ebenso grau wie im deaktivierten Zustand.
Und wenn ich die Schriftfarbe auch noch auf die Vordergrundfarbe setze, sehen die beiden gleich aus.
Tut mir leid, aber wenn Dir das nicht hilft, wäre vielleicht noch ein Screenshot eine Hilfe für uns. :-)
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Duardo
User
Beiträge: 54
Registriert: Mittwoch 2. Juli 2014, 16:56

Nun, leider besteht mein Problem weiterhin. Da ich im Button ein Bild anstatt Text hab, bringt mich deine Lösung leider nicht weiter, da sie sich nur auf die Textfarbe bezieht.

Probiere es am besten selbst mit einem Bild deiner Wahl, hier ein Beispielcode:

Code: Alles auswählen

import Tkinter as tk

window = tk.Tk()

def disable():
    button1.config(state="disabled")
        
button1=tk.Button(command=disable)
testbild=tk.PhotoImage(file="testbild.gif")
button1.image=testbild
button1.configure(relief="flat", image=testbild, height=180, width=180,
                         background="lightgreen", activebackground="lightgreen", bd=0)
button1.pack()

window.mainloop()
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Ok, dass Du ein Bild verwendest, wusste ich nicht.

Aber wie schon angedeutet: warum muss es denn ein Button ein, wenn Du seine typische Funktionalität deaktivierst?
Warum dann nicht ein Label mit z.b. bd=3 und relief='raised'?
Wenn Du dann irgendwann den Button mit normaler Funktion (state='normal') benötigst, tauschst Du das Label einfach gegen den Button aus.
Button ohne Grauschleier wäre sicher einfacher, aber dazu fällt mir gerade keine schnelle Lösung ein.
Viel Erfolg
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten