如何在python 3.7中的Tk画布内创建按钮

时间:2018-10-17 01:56:23

标签: python user-interface tkinter tkinter-canvas

我想知道如何使用tkinter模块将按钮放在画布内。有人问了这个问题,但这是5年前的另一个版本,所以对于我的情况而言,这不是很方便,我还是一个初学者,所以我只在最佳答案中了解了大约3/4的代码。这是一个问题:How to make a Button using the tkinter Canvas widget?

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 :(得分:1)

当您使用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()

答案 1 :(得分:0)

删除button.pack()

尝试使用下面的代码

button =按钮(root,text =“ Quit”,command = root.destroy)

c.create_window(10,10,anchor = NW,window = button)