【发布时间】:2018-07-09 18:12:38
【问题描述】:
我一直在尝试创建一个更像按钮的移动椭圆形。到目前为止,我不打算在单击按钮时执行任何功能,因此我创建了一个 pass 功能。
场景如下: tkinter 窗口中的框架在指定位置被洋红色画布覆盖,并带有一个圆圈(黄色)。这个圆圈实际上是一个按钮,按下它会打开一个弹出菜单,显示一些信息(现在不是必需的)。我设法创建了圆圈,但努力将按钮合并到椭圆中。按钮和圆圈必须在一起,因为这对应该每 3 秒在画布框架中移动一次(听起来像 GPS 点,但点是按钮)。
但是当我尝试创建按钮时,画布消失了,并且框架根据按钮的宽度调整大小。 请帮助我相应地识别错误和正确的代码:
enter code here
from tkinter import *
import random
import time
def nothing():
pass
main = Tk()
frame_1 = Frame(main)
frame_1.grid(row=0, column=0)
main_canvas = Canvas(frame_1, width=200, height=200, bg='magenta')
oval = main_canvas.create_oval(20, 20, 40, 40, outline='black', fill='yellow')
main_canvas.pack()
frame_2 = Frame(main)
frame_2.grid(row=0, column=1)
'''
button2 = Button(main_canvas, text="Q", command=nothing, anchor=W)
button2.configure(width=3, activebackground="#33B5E5", relief=FLAT)
button2_window = main_canvas.create_window(10, 10, anchor=NW, window=button2)
button2.pack(side=TOP)
'''
label_f2_1 = Label(frame_2, text="")
label_f2_1.pack()
label_f2_2 = Label(frame_2, text="")
label_f2_2.pack()
x_current, y_current = 30, 30
for loops in range(86400):
x_new = random.randint(10, 190)
y_new = random.randint(10, 190)
main_canvas.move(oval, x_new-x_current, y_new-y_current)
x_current, y_current = x_new, y_new
main_canvas.update()
time.sleep(1)
now = str(time.ctime())
label_f2_2.configure(text=now[10:])
label_f2_1.configure(text=now[0:10])
# print(time.localtime())
main.mainloop()
使用在 Python 3.7 解释器上运行的 PyEdu。
【问题讨论】:
-
是否有理由在椭圆内放置一个按钮,而不是让用户直接点击椭圆?
-
@BryanOakley 是的,当我单击椭圆时,会弹出一个消息框,显示分配给该椭圆的名称/标签。到目前为止,我相信这可以使用椭圆形内的按钮来实现。但如果你能提供任何其他选择,我会很高兴
标签: python button tkinter tkinter-canvas