python - tkinter,将输入保存为变量
问题描述
我想使用输入值作为变量,这是我的代码。
from tkinter import *
from tkinter import messagebox
window = Tk()
Label(window, text='Cavity number').grid(row=0)
CavNum = StringVar()
for i in range(1,8) :
globals()['L{}_CavNum'.format(i)] = StringVar()
globals()['L{}_CavNum'.format(i)] = Entry(window, textvariable=globals()['L{}_CavNum'.format(i)])
globals()['L{}_CavNum'.format(i)].grid(row=0, column=i)
window.geometry("1200x150")
window.mainloop()
每次我打印(L1_CavNum)时,它都会显示“<tkinter.Entry object .!entry>”。请告诉我有什么问题
解决方案
您正在为条目小部件重新使用与 StringVar 相同的名称。您可以简单地更改globals()['L{}_CavNum'.format(i)] = StringVar()
为globals()['L{}_CavNumSV'.format(i)] = StringVar()
和。但是 .get() 函数将在您的代码运行时执行,因此您必须有一个按钮或另一个事件来回调该函数。print(L1_CavNum)
print(L1_CavNumSV.get())
我会这样做。
from tkinter import *
def print_vars():
for x in range(len(cavity_string_vars)):
print(cavity_string_vars[x].get())
window = Tk()
Label(window, text='Cavity number').grid(row=0)
cavity_string_vars = []
cavity_entries = []
for i in range(7):
cavity_string_vars.append(StringVar())
cavity_entries.append(Entry(window, textvariable=cavity_string_vars[i]))
cavity_entries[i].grid(row=0, column=i)
print_button = Button(window, text="Print", command=print_vars)
print_button.grid(row=1, column=0)
window.geometry("1200x150")
window.mainloop()
对我来说,关联数组比命名每个变量要容易得多,即使您按照自己的方式对其进行编程也是如此。也许您的情况需要这样做。
推荐阅读
- android - 问题 ins 微调器:它没有显示所选项目
- sql-server - 在浮点数据类型的情况下,近似值的示例是什么?
- java - 对在 Comparator.comparing() 中使用方法引用感到困惑
- apache-kafka - 批量 KafkaListener 的 ConsumerInterceptor
- oop - 当我们需要应用一个影响多种项目的动作时如何设计类
- javascript - Highstock => 在页面初始加载时出现类型错误问题
- reactjs - 如何在 Create-React-App 的依赖本地 typescript 节点模块中使用装饰器?
- gitlab - Gitlab CI:变量中的脚本步骤?
- firebase - 使用 Firebase 将集合导出到 BigQuery 扩展程序将 Firestore 数据以表格格式存储在 BigQuery 中
- android - 来自 Assets 文件夹的 Android PDF