python - tkinter 条目小部件未更新
问题描述
我在网上到处搜索,但不幸的是我在哪里找不到这个问题的答案:
在将 tkinter Entry() 小部件的 textvariable 设置为 textvariable 之后。
在我在条目中输入文本后,文本变量不会更新。
下面的代码:
def saveFileName(self):
if(self.save_file_name != ""):
self.window.destroy()
self.name_not_set = False
print("saving...")
else:
print("notsaving...entry empty")
pass
def cancel(self):
self.name_not_set = False
self.exit = True
self.window.destroy()
print("exiting...")
def askForFilename(self):
self.window = tk.Tk()
self.window.wm_title("enter a file name")
label = Label(self.window,text="please enter a file name:").pack(side="top")
entry = Entry(self.window,textvariable=self.save_file_name).pack()
save = Button(self.window,text="save",command=self.saveFileName).pack()
cancel = Button(self.window,text="cancel",command=self.cancel).pack()
self.window.mainloop()
已经定义了必要的变量,并且这些方法是类的一部分,该类是 tk.TK() 实例。
谢谢你,提前祝你圣诞快乐!
解决方案
与条目关联的文本变量应该是StringVar()
. 我在你的代码中没有看到任何这样的声明。
self.save_file_name = StringVar()
要设置和获取 a 的值,StringVar()
您必须使用set()
orget()
方法,例如。
def saveFileName(self):
if(self.save_file_name.get() != ""):
self.window.destroy()
# etc, etc.
另外,不要创建多个Tk()
as 的实例:
def askForFilename(self):
self.window = tk.Tk()
改为使用Toplevel()
。甚至更好:使用 tkinter 文件对话框。
推荐阅读
- oauth-2.0 - OpenID Connect 的 Swagger 规范
- c# - 使用反射循环遍历类中的结构
- php - rawurldecode() 和 rawurldecode(urlencode(urldecode())) 有什么区别
- neo4j - Neo4j APOC 分配的RelationshipProperties,removedRelationshipProperties 触发器和apoc.index.in
- sql-server - 为什么允许这样做:使用 compatibility_level = 100 创建数据库 [MyExample]
- python-3.x - 尝试使用类似于 SQL 的 python 聚合 groupy 中的多个列
- angular - 想要将 Angular 4 与 Spring Boot 应用程序集成
- corda - 如何下载network-bootstrapper-corda-1.0.jar?
- sql - Azure 流分析中具有不同架构的多个警报联合
- javascript - 我需要在与 ngFor angular 5 相同的选择框中给出州和地区的详细信息