Me preguntaba cómo poner un botón dentro de un lienzo usando el módulo tkinter. Se hizo esta pregunta, pero fue hace 5 años y para una versión diferente, así que no fue muy conveniente para mi situación y todavía soy un principiante, por lo que solo entendí aproximadamente 3/4 del código en la mejor respuesta. Aquí está la pregunta: Cómo hacer un botón usando el widget de lienzo de tkinter?

from tkinter import *
root = Tk()
c=Canvas(root,width=200,height=150,bg='blue')
c.pack(side = 'top')

c.create_text(100,50,anchor='c',fill='orange',font='Times 28',text='List')

button = Button(root, text="Quit",command=root.destroy)
button.pack()

mainloop()

Cuando ejecuto este código, crea el botón debajo de mi lienzo y no en el lienzo. Busqué ayuda en https://docs.python.org/3.7/library/tkinter .html la guía para el IDE que estoy usando. No pude encontrar la manera de poner el botón en el lienzo, aunque puede que me haya perdido algo o no. Si considera que esta pregunta no es útil o innecesaria, me disculpo y la cerraré de inmediato.

Versión de Python: 3.7

Nivel: Principiante

Código de ejecución en: IDLE de 64 bits

SO: Windows 10

2
pErs0nZ 17 oct. 2018 a las 04:56

2 respuestas

La mejor respuesta

Cuando use pack() tkinter colocará el botón en su maestro (raíz), y el área donde se dibuja el lienzo ya está ocupada.

Para colocar el botón en el lienzo, debe usar la función create_window() en el lienzo:

from tkinter import *

root = Tk()
c = Canvas(root,width=200,height=150,bg='blue')
c.pack(side = 'top')

c.create_text(100, 50, anchor='c', fill='orange', font='Times 28', text='List')

button = Button(root, text="Quit", command=root.destroy)
canvas_widget = c.create_window(100, 100, window=button)

root.mainloop()
1
figbeam 17 oct. 2018 a las 03:06

Eliminar button.pack ()

Intente usar el siguiente código

Button = Button (root, text = "Salir", command = root.destroy)

C.create_window (10, 10, ancla = NW, ventana = botón)

0
邱俊華 17 oct. 2018 a las 03:16