Как создать кнопку внутри холста Tk в Python 3.7 - PullRequest
0 голосов
/ 17 октября 2018

Мне было интересно, как поместить кнопку внутри холста с помощью модуля tkinter.Этот вопрос был задан, но это было 5 лет назад и для другой версии, так что это было не очень удобно для моей ситуации, и я все еще новичок, поэтому я понял только около 3/4 кода в лучшем ответе.Вот вопрос: Как создать кнопку с помощью виджета tkinter Canvas?

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()

Когда я запускаю этот код, он создает кнопку под моим Canvas, а не на Canvas.Я искал справку по https://docs.python.org/3.7/library/tkinter.html руководству по IDE, которое я использую.Я не мог найти способ поместить кнопку на холст, хотя я мог или не мог что-то пропустить.Если этот вопрос считается бесполезным или ненужным, я прошу прощения и немедленно закрою его.

Версия Python: 3.7

Уровень: Новичок

Запуск кода на: IDLE 64-бит

ОС: Windows 10

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

delete button.pack ()

попробуйте использовать код ниже

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

c.create_window (10, 10, якорь = NW, окно = кнопка)

0 голосов
/ 17 октября 2018

Когда вы используете pack(), tkinter поместит кнопку на свой мастер (корень), и область, где нарисован холст, уже занята.

Чтобы разместить кнопку на холсте, вы должны использовать функцию create_window() на холсте:

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()
...