python tk mainloop原理_理解Tkinter mainloop()的逻辑以及为什么变量没有重新分配它们的原始值?...
据我所知,window.mainloop()不断重复GUI代码,以便窗口及其小部件保持在屏幕上。因此,为什么一个变量(如canvastext)可以被更新并保持更新?难道window.mainloop()的逻辑会覆盖canvastext,使其再次具有文本值“Hi”,而不是新的spinbox值吗?可能我完全误解了window.mainloop()的作用,但是如果它确实使程序在代码中不断循环,那么为什么
据我所知,window.mainloop()不断重复GUI代码,以便窗口及其小部件保持在屏幕上。因此,为什么一个变量(如canvastext)可以被更新并保持更新?难道window.mainloop()的逻辑会覆盖canvastext,使其再次具有文本值“Hi”,而不是新的spinbox值吗?
可能我完全误解了window.mainloop()的作用,但是如果它确实使程序在代码中不断循环,那么为什么不重新分配变量的原始值呢?在from tkinter import *
x = 10
y = 10
a = 100
b = 100
def hello():
#print spin value
print ("Spin Value:")
number = v.get()
print(number)
#update text with variable value
txt = v.get()
global canvastext
canvas1.delete(canvastext)
canvas1.update()
canvastext = canvas1.create_text(50, 50, text = txt)
window = Tk()
window.geometry("500x500")
#canvas and drawing
canvas1=Canvas(window, height = 200, width = 400)
canvas1.grid(row=0, column=0, sticky=W)
coord = [x, y, a, b]
rect = canvas1.create_rectangle(*coord, outline="#fb0", fill="#fb0")
canvastext = canvas1.create_text(50, 50, text ="Hi")
# create a toplevel menu
menubar = Menu(window)
firstmenu = Menu(menubar, tearoff=0)
firstmenu.add_command(label="Hello!", command=hello)
firstmenu.add_command(label="Quit!", command=window.destroy)
menubar.add_cascade(label="Menu1", menu=firstmenu)
secondmenu = Menu(menubar, tearoff=0)
secondmenu.add_command(label="Hi!", command=hello)
secondmenu.add_command(label="Quit!", command=window.destroy)
menubar.add_cascade(label="Menu2", menu=secondmenu)
window.config(menu=menubar)
#spinboxes and capturing value
v=IntVar()
spin = Spinbox(window, textvariable=v, from_=1, to = 10)
spin.grid(row=1, column = 0, sticky= W)
window.mainloop()

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)