【问题标题】:Python - Tkinter - Label Not UpdatingPython - Tkinter - 标签未更新
【发布时间】:2016-09-22 11:14:17
【问题描述】:

任何想法为什么 leftresult_label 标签不更新?该功能似乎有效,但标签没有更新。我到处寻找,找不到答案。 'left' 值被设置,但标签没有改变。

from tkinter import *

root = Tk(className="Page Calculator")

read = IntVar()

total = IntVar()

left = IntVar()

read.set(1)

total.set(1)

left.set(1)

read_label = Label(root,text="Pages Read:")
read_label.grid(column=1, row=1)

total_label = Label(root,text="Total Pages:")
total_label.grid(column=1, row=2)

read_entry = Entry(root,textvariable=read)
read_entry.grid(column=2, row=1)

total_entry = Entry(root,textvariable=total)
total_entry.grid(column=2, row=2)

def func1():
    left.set(total.get() - read.get())
    print(left.get())

calculate_button = Button(root,text="Calculate",command= func1)
calculate_button.grid(column=2, row=3)

percenet_label = Label(root,text="Percent Finished:")
percenet_label.grid(column=1, row=4)

left_label = Label(root,text="Pages Left:")
left_label.grid(column=1, row=5)

percenetresult_label = Label(root,text=left.get())
percenetresult_label.grid(column=2, row=4)

leftresult_label = Label(root,text="")
leftresult_label.grid(column=2, row=5)

root.mainloop()

【问题讨论】:

    标签: python tkinter label


    【解决方案1】:

    为了让函数发挥作用,你宁愿有你的标签:

    leftresult_label = Label(root, textvariable=left)
    

    一旦它是 tkinter 类变量,tkinter 会在您更改值时进行处理。点击按钮后,

    def func1():
        left.set(total.get() - read.get())
        percent.set(int(read.get()*100/total.get()))
    

    left 和 percent 值,它们是 tkinter.IntVar() 类的实例,对这些值设置为文本变量的小部件(在本例中为标签)具有即时效果,就像在 Entry 小部件中一样。

    这里是完整的代码:

    from tkinter import *
    
    root = Tk(className="Page Calculator")
    read = IntVar()
    total = IntVar()
    left = IntVar()
    percent = IntVar()
    
    read.set(1)
    total.set(1)
    left.set(1)
    percent.set(1)
    
    def func1():
        left.set(total.get() - read.get())
        percent.set(int(read.get()*100/total.get()))
    
    read_label = Label(root,text="Pages Read:")
    read_label.grid(column=1, row=1)
    
    read_entry = Entry(root,textvariable=read)
    read_entry.grid(column=2, row=1)
    
    total_label = Label(root,text="Total Pages:")
    total_label.grid(column=1, row=2)
    
    total_entry = Entry(root,textvariable=total)
    total_entry.grid(column=2, row=2)
    
    
    calculate_button = Button(root,text="Calculate",command= func1)
    calculate_button.grid(column=2, row=3)
    
    percenet_label = Label(root,text="Percent Finished:")
    percenet_label.grid(column=1, row=4)
    
    left_label = Label(root,text="Pages Left:")
    left_label.grid(column=1, row=5)
    
    percenetresult_label = Label(root,textvariable=percent)
    percenetresult_label.grid(column=2, row=4)
    
    leftresult_label = Label(root,textvariable=left)
    leftresult_label.grid(column=2, row=5)
    
    root.mainloop()
    

    【讨论】:

      【解决方案2】:

      包含进度条的代码。 update_idletasks() 用于保持标签和进度条运行。

      from tkinter import *
      from tkinter import ttk
      root = Tk()
      root.title('Counter Test')
      root.iconbitmap('IT.ico')
      root.geometry("800x400")
      
      def missing():
          while i < 100:                        
              progress1['value'] = i 
              label1.config(text=progress1['value'])
              root.update_idletasks()
              i += 1
              
      progress1 = ttk.Progressbar(root, orient=HORIZONTAL, length=250, mode='determinate')
      progress1.pack(pady=15)
      
      label1 = Label(root, text="")
      label1.pack(pady=15)
      
      button_1 = Button(root, text="Missing", command=missing)
      button_1.pack(pady=15)
      
      button_q = Button(root, text="Quit", command=root.destroy)
      button_q.pack(pady=15)
      
      root.mainloop() 
      

      【讨论】:

        【解决方案3】:

        所以要立即更新控件,比如更新标签和 TreeView 元素,这段代码对我有用。

        window = tk.Tk()

        window.update_idletasks()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-11-18
          • 2015-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-12
          相关资源
          最近更新 更多