gpt4 book ai didi

python - 在 Python 3.5.2 中使用 tkinter 更新按钮按下时输入字段中的标签

转载 作者:行者123 更新时间:2023-11-28 20:36:07 27 4
gpt4 key购买 nike

我正在尝试创建一个带有行标签、输入字段、当前值标签和“更新值”按钮的窗口。

这是一个例子:

enter image description here

这就是我目前所拥有的。我可以获得输入的值以打印到控制台,但我似乎无法弄清楚如何通过按下按钮来获取输入的值并更改 currentValue 标签以反射(reflect)该值:

from tkinter import*
main=Tk()

#StringVar for currentValue in R0C2
currentValue = StringVar(main, "0")

#Called by the setValues button, looks for content in the entry box and updates the "current" label
def setValues():
content = entry.get()
print(content)


#This kills the program
def exitProgram():
exit()

#Title and window size
main.title("Title")
main.geometry("350x200")

#Descriptions on the far left
Label(main, text="Duration (min): ").grid(row=0, column=0)

#Entry boxes for values amidship
entry=Entry(main, width=10)
entry.grid(row=0, column=1)

#Displays what the value is currently set to.
currentValue = Label(textvariable=currentValue)
currentValue.grid(row=0,column=2)

#Takes any inputted values and sets them in the "Current" column using def setValues
setValues=Button(text='Set Values',width=30,command=setValues)
setValues.grid(row=9, column=0, columnspan=2)

#Red button to end program
exitButton=Button(main, text='Exit Program',fg='white',bg='red',width=30, height=1,command=exitProgram)
exitButton.grid(row=20, column = 0, columnspan=2)
main.mainloop()

最佳答案

您的代码存在一些问题。

首先,您要用 setValues 按钮小部件覆盖 setValues 函数,同样,您要用 currentValue StringVar 覆盖 currentValue 标签。

要设置 StringVar,您可以使用它的 .set 方法。

不要在脚本中使用普通的exit,它只能用于交互式解释器 session ,正确的退出函数是sys.exit。但是,在 Tkinter 程序中,您只需调用根窗口的 .destroy 方法即可。

这是您的代码的修复版本。

import tkinter as tk
main = tk.Tk()

#StringVar for currentValue in R0C2
currentValue = tk.StringVar(main, "0")

#Called by the setValues button, looks for content in the entry box and updates the "current" label
def setValues():
content = entry.get()
print(content)
currentValue.set(content)

#This kills the program
def exitProgram():
main.destroy()

#Title and window size
main.title("Title")
main.geometry("350x200")

#Descriptions on the far left
tk.Label(main, text="Duration (min): ").grid(row=0, column=0)

#Entry boxes for values amidship
entry = tk.Entry(main, width=10)
entry.grid(row=0, column=1)

#Displays what the value is currently set to.
currentValueLabel = tk.Label(textvariable=currentValue)
currentValueLabel.grid(row=0,column=2)

#Takes any inputted values and sets them in the "Current" column using def setValues
setValuesButton = tk.Button(text='Set Values',width=30,command=setValues)
setValuesButton.grid(row=9, column=0, columnspan=2)

#Red button to end program
exitButton = tk.Button(main, text='Exit Program',fg='white',bg='red',width=30, height=1,command=exitProgram)
exitButton.grid(row=20, column = 0, columnspan=2)
main.mainloop()

顺便说一句,避免“明星”进口是个好主意。执行 from tkinter import * 会将 130 个名称转储到您的命名空间中,这是不必要的,并且会产生名称冲突的可能性,尤其是当您从多个模块进行星形导入时。它还会降低代码的可读性,因为读者会记住哪些名称是您定义的,哪些名称来自导入的模块。

关于python - 在 Python 3.5.2 中使用 tkinter 更新按钮按下时输入字段中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45752122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com