El argumento background no funciona en un botón TKinter.
Resuelto
Veyten
-
Veyten Mensajes publicados 6 Estado Miembro -
Veyten Mensajes publicados 6 Estado Miembro -
Hola,
Soy principiante en Python. He codificado un script con
Aunque he configurado
¿Cómo puedo cambiar el color de fondo si este argumento no funciona, y por qué no funciona?
Gracias de antemano,
Veyten.
Soy principiante en Python. He codificado un script con
tkinter, pero tengo un botón que no funciona:
generate_button = Button(right_frame, text="Generar", font=("Arial", 20), bg='#68F004', fg='white', relief=SUNKEN, bd=0, highlightthickness=0, command=generate_passwd) Aunque he configurado
bg='#68F004', obtengo un fondo gris y no verde.
¿Cómo puedo cambiar el color de fondo si este argumento no funciona, y por qué no funciona?
Gracias de antemano,
Veyten.
6 respuestas
-
¡Gracias a todos por ayudarme!
Finalmente, fue yg_be quien encontró la respuesta, que se puede consultar aquí:
https://stackoverflow.com/questions/1529847/how-to-change-the-foreground-or-background-colour-of-a-tkinter-button-on-mac-os
En MacOS, los botones se gestionan de manera diferente. Tkinter no puede modificar el color de fondo del botón por esta razón. Afortunadamente, hay un módulo, tkmacosx, que se debe importar además de Tkinter. Deja los comandos de Tkinter, pero corregidos para MacOS. Por lo tanto, me permite cambiar el bg y le da un aspecto un poco más "mac" al botón.
El resultado con Tkmacosx asociado a Tkinter es el siguiente:
Gracias a todos/as los/as que han dado un poco de su tiempo para intentar ayudarme, es reconfortante ver que aún hay un poco de solidaridad en este mundo de locos.
Veyten -
Hola,
Raro, en mi casa funciona:
Tal vez con el código completo, lo veríamos más claro...-
Hola,
El código completo es:
import string from random import randint, choice from tkinter import * def generate_passwd(): passwd_min = 6 passwd_max = 18 all_chars = string.ascii_letters + string.punctuation + string.digits password = "".join(choice(all_chars)for x in range(randint(passwd_min, passwd_max))) password_entry.delete(0, END) password_entry.insert(0, password) window = Tk() window.title("Generador de contraseñas") window.geometry() window.minsize(720, 480) window.iconbitmap('logo.png') window.config(background='#5EFBDC') frame = Frame(window, bg='#5EFBDC') # agregar imagen width = 300 height = 300 image = PhotoImage(file="logo.png").zoom(50).subsample(60) canvas = Canvas(frame, width=width, height=height, bg='#5EFBDC', bd=0, highlightthickness=0) canvas.create_image(width/2, height/2, image=image) canvas.grid(row=0, column=0, sticky=W) right_frame = Frame(frame, bg='#5EFBDC') label_title = Label(right_frame, text="Contraseña", font=("Helvetica", 20), bg='#5EFBDC', fg='white') label_title.pack() # crear un campo/input password_entry = Entry(right_frame, font=("Helvetica", 20), bg='#5EFBDC', fg='white') password_entry.pack() # crear un botón generate_button = Button( right_frame, text="Generar", font=("Arial", 20), bg='#68F004', fg='#68F004', relief=SUNKEN, bd=0, highlightthickness=0, command=generate_passwd ) # curiosamente, el argumento 'bg=' no tiene efecto y el fondo sigue siendo gris cuando debería ser verde. generate_button.pack(pady=10, fill=X) right_frame.grid(row=0, column=1, sticky=W) frame.pack(expand=YES) # crear barra de menú menu_bar = Menu(window) file_menu = Menu(menu_bar, tearoff=0) file_menu.add_command(label="Nuevo", command=generate_passwd) file_menu.add_command(label="Salir", command=window.quit) menu_bar.add_cascade(label="Archivo", menu=file_menu) window.config(menu=menu_bar) window.mainloop()
Sé que no está correctamente distribuido en funciones, pero no me parece que eso afecte a la ejecución de mi programa.
Gracias,
Veyten
-
-
-
bg = fg porque trataba de poner bg en #68F004, pero como seguía siendo gris, también puse fg en #68F004 porque este era blanco y por lo tanto era ilegible en blanco sobre gris claro.
Voy a intentar actualizar Tkinter y ver si eso resuelve el problema.-
-
-
-
-
Veo aquí varias sugerencias de soluciones o alternativas.
-
-
Estoy en MacOS, tal vez la forma en que maneja las ventanas no sea compatible.
Voy a probar en un Linux. -
Parece que en Linux, mi programa funciona perfectamente. El botón tiene ese color verde. Puede que sea una incompatibilidad con la gestión de botones en MacOS.
