据我所知,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()

Logo

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

更多推荐