【问题标题】:Python update user input with tkinter buttonPython 使用 tkinter 按钮更新用户输入
【发布时间】:2020-01-14 19:52:50
【问题描述】:

我刚开始使用 python,但遇到了问题。我尝试了各种解决方案,但无法更新显示“19”的字段。当我点击加号时,我希望它是 20,然后是 21,...当我点击时 - 它必须回到 20、19。谁能告诉我如何解决这个问题?

 from tkinter import *

    def fct_tempplus():
        while True:
            #  tekstvak_input_user = tekstvak_input_user +1
            return tekstvak_input_user + 1

    def fct_tempmin():
        print ('ok')


    window = Tk()
    window.geometry("800x400")  # not *
    window.title("TEST")

    label= Label( window, text = "Temp?")
    label.place(x=350,y=175)


    tempplus=Button(window, bd=10,width=10, height = 1,text="+",command=fct_tempplus,
font=("Helvetica", 12))
    tempplus.place(x=500,y=150)


    tempmin=Button(window, bd=10,width=10, height = 1,text="-", font=("Helvetica", 12),command=fct_tempmin)
    tempmin.place(x=500,y=200)


    tekstvak_input_user = Entry(window, width = 10 )
    tekstvak_input_user.insert(0,19.0)
    tekstvak_input_user.place(x=350 , y=200)



    window.mainloop()`

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    此程序不需要while True。你必须使用.get() 来获取函数内部的值。然后你应该将它存储在一个全局变量中,将其转换为intfloat。然后,只需使用delete(0, END) 清除Entry 小部件内的内容,然后使用insert() 将新值插入Entry

    像这样:

    from tkinter import *
    
    var = 0
    
    
    def fct_temp_plus():
        global var
        var = float(tekstvak_input_user.get())
        var += 1
        tekstvak_input_user.delete(0, END)
        tekstvak_input_user.insert(0, var)
    
    
    def fct_temp_min():
        global var
        var = float(tekstvak_input_user.get())
        var -= 1
        tekstvak_input_user.delete(0, END)
        tekstvak_input_user.insert(0, var)
    
    
    window = Tk()
    window.geometry("800x400")  # not *
    window.title("TEST")
    
    label = Label(window, text="Temp?")
    label.place(x=350, y=175)
    
    
    temp_plus = Button(window, bd=10, width=10, height=1, text="+", command=fct_temp_plus, font=("Helvetica", 12))
    temp_plus.place(x=500, y=150)
    
    
    temp_min = Button(window, bd=10, width=10, height=1, text="-", font=("Helvetica", 12), command=fct_temp_min)
    temp_min.place(x=500, y=200)
    
    tekstvak_input_user = Entry(window, width=10)
    tekstvak_input_user.insert(0, 19.0)
    tekstvak_input_user.place(x=350, y=200)
    
    window.mainloop()
    

    注意:您应该始终import tkinter as tk

    像这样:

    import tkinter as tk
    
    var = 0
    
    
    def fct_temp_plus():
        global var
        var = float(tekstvak_input_user.get())
        var += 1
        tekstvak_input_user.delete(0, tk.END)
        tekstvak_input_user.insert(0, var)
    
    
    def fct_temp_min():
        global var
        var = float(tekstvak_input_user.get())
        var -= 1
        tekstvak_input_user.delete(0, tk.END)
        tekstvak_input_user.insert(0, var)
    
    
    window = tk.Tk()
    window.geometry("800x400")
    window.title("TEST")
    
    label = tk.Label(window, text="Temp?")
    label.place(x=350, y=175)
    
    temp_plus = tk.Button(window, bd=10, width=10, height=1, text="+", command=fct_temp_plus, font=("Helvetica", 12))
    temp_plus.place(x=500, y=150)
    
    temp_min = tk.Button(window, bd=10, width=10, height=1, text="-", font=("Helvetica", 12), command=fct_temp_min)
    temp_min.place(x=500, y=200)
    
    tekstvak_input_user = tk.Entry(window, width=10)
    tekstvak_input_user.insert(0, 19.0)
    tekstvak_input_user.place(x=350, y=200)
    
    window.mainloop()
    

    【讨论】:

      猜你喜欢
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2022-01-17
      • 1970-01-01
      • 2021-02-14
      • 2022-01-23
      相关资源
      最近更新 更多