Home > Article > Backend Development > Tkinter entry returns default value instead of entered value
我试图让按钮返回我在“条目”字段中输入的任何值,但它始终返回 xml 文件中设置的默认值。该程序在报告值时似乎忽略了我在框中输入的内容。
这是我的代码:
from tkinter import * import tkinter as tk from formation import appbuilder root = tk.tk() root.withdraw() app = appbuilder(path="calculator.xml") def calculate(event=none): # event parameter needs to be there because using the bind method passes an event object # access the expr_var we created earlier to determine the current expression entered expr = app.expr_var.get() # evaluate the expression try: result = expr except exception: # if the expression entered was malformed and could not be evaluated # we will display an error message instead result = "invalid expression" # display the result app.result.config(text=result) app.connect_callbacks(globals()) app.mainloop()
这将调用包含以下代码的 xml 文件:
<?xml version='1.0' encoding='utf-8'?> <tkinter.Tk xmlns:attr="http://www.hoversetformationstudio.com/styles/" xmlns:layout="http://www.hoversetformationstudio.com/layouts/" name="tk_1" attr:layout="place" layout:width="300" layout:height="233" layout:x="30" layout:y="30"> <meth name="title"> <arg value="title" /> </meth> <meth name="geometry"> <arg value="300x200+0+0" /> </meth> <meta major="6" minor="2" name="version" /> <tkinter.StringVar attr:name="expr_var" attr:value="" /> <tkinter.Entry name="entry_1" attr:textvariable="expr_var" layout:width="200" layout:height="25" layout:x="50" layout:y="35" layout:bordermode="outside" /> <tkinter.Label name="result" layout:width="200" layout:height="25" layout:x="50" layout:y="74" layout:bordermode="outside" /> <tkinter.Button name="calculate" attr:text="button_1" layout:width="80" layout:height="25" layout:x="110" layout:y="133" layout:bordermode="outside"> <event sequence="<Button-1>" handler="calculate" add="False" /> </tkinter.Button> </tkinter.Tk>
我使用 formationstudio 构建 tkinter gui。 我不确定我做错了什么,或者我是否应该采取完全不同的方法。
这是因为tk()
有两个实例:
appbuilder
删除显式创建的实例。
from formation import AppBuilder app = AppBuilder(path="calculator.xml") def calculate(event=None): # event parameter needs to be there because using the bind method passes an event object # access the expr_var we created earlier to determine the current expression entered expr = app.expr_var.get() # evaluate the expression try: result = expr except Exception: # if the expression entered was malformed and could not be evaluated # we will display an error message instead result = "Invalid expression" # display the result app.result.config(text=result) app.connect_callbacks(globals()) app.mainloop()
The above is the detailed content of Tkinter entry returns default value instead of entered value. For more information, please follow other related articles on the PHP Chinese website!