【发布时间】:2021-08-09 17:02:04
【问题描述】:
我正在尝试制作一个包含输入字段和提交按钮的 tkinter 框架。当按下提交按钮时,我想将输入字符串传递给程序并销毁框架。经过多次实验,我想出了这个脚本:
from tkinter import *
from tkinter import ttk
import time
root = Tk()
entryframe = ttk.Frame(root)
entryframe.pack()
par = StringVar('')
entrypar = ttk.Entry(entryframe, textvariable=par)
entrypar.pack()
submit = ttk.Button(entryframe, text='Submit', command=entryframe.quit)
submit.pack()
entryframe.mainloop()
entryframe.destroy()
parval = par.get()
print(parval)
time.sleep(3)
root.mainloop()
当“提交”按钮被按下时,参数值被正确地传递给脚本并被打印出来。但是,入口帧仅在 3 秒后被销毁(由 time.sleep 函数设置)。 我想立即销毁入口框架。 我有一个稍微不同的脚本版本,其中入口框架确实立即被破坏(尽管按钮本身没有被破坏),但 par 的值没有被打印出来:
from tkinter import *
from tkinter import ttk
import time
root = Tk()
entryframe = ttk.Frame(root)
entryframe.pack()
par = StringVar('')
entrypar = ttk.Entry(entryframe, textvariable=par)
entrypar.pack()
submit = ttk.Button(root, text='Submit', command=entryframe.destroy)
submit.pack()
entryframe.mainloop()
# entryframe.destroy()
parval = par.get()
print(parval)
time.sleep(3)
root.mainloop()
我怎样才能得到两个动作,即立即销毁入口框架并打印 par 的值?
【问题讨论】:
-
在使用
tkinter时绝对不要使用time.sleep,除非你真的知道自己在做什么 -
你应该只使用一个
mainloop(),当你点击按钮时,你应该运行从Entry获取值的函数,显示它或将它放在某个全局变量而不是StringVar中,然后销毁窗户。Button(command=my_function_to_get_data)
标签: python tkinter tkinter-entry