【问题标题】:Tkinter Entry Not UpdatingTkinter 条目未更新
【发布时间】:2021-12-30 15:00:20
【问题描述】:
from tkinter import *
from PIL import Image, ImageTk
import datetime
import os

root = Tk()
root.title("To-do List")
root.geometry("400x600")
root.resizable(width=False, height=False)
# Balance
global be
bet = settings_main_canvas.create_text(110, 165, text="Balance: ", font="Helvetica 14") # Balance Entry Text
be = Entry(root, width=20, font="Helvetica 10", borderwidth=2, bg="#f0f0f0") # Balance Entry
be.insert(0, "Amount in USD")
settings_main_canvas.create_window(170, 165, window=be, anchor=W)



# Text
global acc_name
global balance
global progress_bar_tasks
acc_name = sidebar_canvas.create_text(65, 18, text=ane.get(), font="TimesNewRoman 10 bold", anchor=NW)
balance = sidebar_canvas.create_text(65, 35, text=be.get() + "$", font="TimesNewRoman 8", anchor=NW)
progress_bar_tasks = sidebar_canvas.create_text(180, 30, text="{} / {} Complete".format(len(inbox_finished_tasks), len(inbox_tasks_num)), font="TimesNewRoman 9", anchor=NW)
root.mainloop()

我不知道为什么,但是当我打印 be.get() 时,它总是返回我插入的值,即使我更改了条目中的文本

【问题讨论】:

  • 请提供完整的minimal reproducible example
  • 您在创建条目小部件大约一毫秒后调用.get()
  • 我们今天早些时候几乎有同样的问题。您必须了解事件驱动编程。当您调用这些“创建”函数时,不会绘制任何内容。所做的只是发送请求创建控件的消息。这些消息将全部堆积起来,直到致电root.mainloop。只有在那个时候才会发送消息,并绘制您的控件。在用户告诉你它已经准备好之前,你不能阅读用户的输入,通常是通过单击一个按钮。您添加一个回调来处理点击事件并获取信息。

标签: python tkinter tkinter-entry


【解决方案1】:

发生这种情况的原因是,在您可以编辑条目中的文本之前,balance 已经创建并且不会不断更新。所以balance 中的文字不会更新。

编辑

您可以执行以下操作(随意编辑变量名称、自定义变量和编辑函数):

from tkinter import *

root = Tk()

#Defining the update label function
def updateLbl():
    lbl.config(text=enter.get())

    root.after(1000, updateLbl)

enter = Entry(root)
enter.pack()
enter.insert(0, "text")

lbl = Label(root)
lbl.pack()

#calling the function
updateLbl()

root.after(1000, updateLbl)

root.mainloop()

【讨论】:

  • 我不明白,那我要改什么?
  • 答案已编辑@MarkGeorge
  • 嗯,我有一个问题,canvas.create_text() 没有 .config
  • @MarkGeorge ,您可以将标签和条目移动到根窗口而不是画布吗?如果可以,请尝试,您将不需要canvas.create_text()
  • 好吧,那画布的意义何在,我想把它们归为一个地方,所以我可以说一次全部删除
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2014-07-13
  • 2021-07-11
  • 2018-11-02
  • 1970-01-01
  • 2022-10-13
相关资源
最近更新 更多