Tkinter 条目返回默认值,而不是输入的值
问题内容
我试图让按钮返回我在“条目”字段中输入的任何值,但它始终返回 xml 文件中设置的默认值。该程序在报告值时似乎忽略了我在框中输入的内容。
这是我的代码:
from tkinter import *import tkinter as tkfrom formation import appbuilderroot = 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> <meth> <arg></arg> </meth> <meth> <arg></arg> </meth> <meta> <tkinter.stringvar></tkinter.stringvar> <tkinter.entry></tkinter.entry> <tkinter.label></tkinter.label> <tkinter.button> <event>" handler="calculate" add="False" /> </event></tkinter.button></tkinter.tk>
我使用 formationstudio 构建 tkinter gui。我不确定我做错了什么,或者我是否应该采取完全不同的方法。
正确答案
这是因为tk()有两个实例:
删除显式创建的实例。
from formation import AppBuilderapp = 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()