Liebe Community,
Ich brauche etwas start Hilfe.
Wie kann ich die Farbe eines Butons ändern wenn dieser angeklickt wurde.
:K Besser gesagt. Ich habe dem Button eine Funktion als command (lamda) gegeben.
Wird dieses aufgerufen erscheint der aus TKinter bekante FarbAuswahlDialog
Wird nun hier eine neue Farbe ausgewählt, dann soll auch der Hintergrund des Buttons
diese Farbe zu erhalten, um so zu sehen welche Farbe gewählt wurde. :K
Ein vorschlag wie man das erreichen könnte möglichst mit Beispiel wäre echt tool
Button Farbe ändern wenn Button geklickt wurde
Hallo,
schau dir mal die allgemeinen Widget-Methoden w.config bzw w.configure an. Außerdem gibt es noch das Statement w[option] = value
Falls du ttk verwendest, musst du beachten, dass hier "themes" und "styles" verwendet werden.
mfg
schau dir mal die allgemeinen Widget-Methoden w.config bzw w.configure an. Außerdem gibt es noch das Statement w[option] = value
Falls du ttk verwendest, musst du beachten, dass hier "themes" und "styles" verwendet werden.
mfg
Man könnte sich einen abgeleiteten `Button` dafür schreiben:
Code: Alles auswählen
from __future__ import absolute_import, division, print_function
import Tkinter as tk
from colorsys import rgb_to_hls, hls_to_rgb
from tkColorChooser import askcolor
class ColorButton(tk.Button, object):
def __init__(self, master, color=None, **kwargs):
tk.Button.__init__(self, master, **kwargs)
self._color = None
self._command = kwargs.get('command', lambda: None)
self['command'] = self.choose_color
self.color = color
@property
def color(self):
return self._color
@color.setter
def color(self, color):
self._color = color
red, green, blue = (c / 65535.0 for c in self.winfo_rgb(color))
hue, lightness, saturation = rgb_to_hls(red, green, blue)
red, green, blue = (
int(c * 255)
for c in hls_to_rgb(hue, min(1.0, lightness + 0.2), saturation)
)
foreground = 'white' if lightness < 0.5 else 'black'
self.configure(
background=color,
activebackground='#{0:02x}{1:02x}{2:02x}'.format(red, green, blue),
foreground=foreground,
activeforeground=foreground
)
def choose_color(self):
_, color = askcolor(self.color)
if color is not None:
self.color = color
self._command(self.color)
def main():
root = tk.Tk()
color_button = ColorButton(root, 'red', text='Choose color', command=print)
color_button.pack()
root.mainloop()
if __name__ == '__main__':
main()