我想创建一个输入个人详细信息的条目小部件,但是我想将这些细节保存为变量,因此我可以将它们写在txt文件中。
from tkinter import *
root = Tk()
Label(root, text = "Childs First name").grid(row = 0, sticky = W)
Label(root, text = "Childs Surname").grid(row = 1, sticky = W)
Label(root, text = "Childs Year of Birth").grid(row = 2, sticky = W)
Label(root, text = "Childs Month of Birth").grid(row = 3, sticky = W)
Label(root, text = "Childs Day of Birth").grid(row = 4, sticky = W)
Fname = Entry(root)
Sname = Entry(root)
x = Entry(root)
y = Entry(root)
z = Entry(root)
Fname.grid(row = 0, column = 1)
Sname.grid(row = 1, column = 1)
x.grid(row = 3, column = 1)
y.grid(row = 2, column = 1)
z.grid(row = 4, column = 1)
Fname = Fname.get
Sname = Sname.get
x = x.get
y = y.get
z = z.get
mainloop()
我的代码工作得非常好,但它不会保存我输入的内容,更不用说将其保存在变量中了。我显然错过了很多代码,但我不知道代码是什么。
P.S:另外,如果不是太多,我如何制作一个按钮继续下一行代码呢?
答案 0 :(得分:1)
这还没有得到回答,所以这里有一大堆代码可以满足您的要求。
from tkinter import *
root = Tk()
Label(root, text = "Childs First name").grid(row = 0, sticky = W)
Label(root, text = "Childs Surname").grid(row = 1, sticky = W)
Label(root, text = "Childs Year of Birth").grid(row = 2, sticky = W)
Label(root, text = "Childs Month of Birth").grid(row = 3, sticky = W)
Label(root, text = "Childs Day of Birth").grid(row = 4, sticky = W)
Fname = Entry(root)
Sname = Entry(root)
x = Entry(root)
y = Entry(root)
z = Entry(root)
Fname.grid(row = 0, column = 1)
Sname.grid(row = 1, column = 1)
x.grid(row = 3, column = 1)
y.grid(row = 2, column = 1)
z.grid(row = 4, column = 1)
def getInput():
a = Fname.get()
b = Sname.get()
c = x.get()
d = y.get()
e = z.get()
root.destroy()
global params
params = [a,b,c,d,e]
Button(root, text = "submit",
command = getInput).grid(row = 5, sticky = W)
mainloop()
它不是很优雅,但它完全符合您的要求,只需对您的版本进行最少量的更改。
如果您运行它,并在输入字段中输入1
,2
,3
,4
和5
,请点击{我添加了{1}}按钮,然后打印submit
params
,您得到:
list
如果由于某种原因您不希望在提交后关闭窗口,请省略>>> params
['1', '2', '4', '3', '5']
并从那里取出。
请注意,root.destroy()
作为getInput
参数没有括号,因此仅在单击按钮时调用它,而不是在执行此行时调用。
最后,我不确定你的上一个问题是什么意思,'我怎样才能按下按钮继续下一行代码'。最后添加的Button
内容确保(除其他外)代码的其余部分在框关闭之前不会执行(它还会启动循环收集事件并确保事件得到处理) 。因此,一旦单击mainloop()
并关闭窗口,其余代码就会被执行。如果您在submit
行之前或之后添加print('hi')
语句,则会进一步了解这一点。如果你之前添加它,字符串将与窗口的开口“同时”打印;如果你把它放在后面,它会在窗户关闭后打印出来。 (有关mainloop()
的其他信息,请查看堆栈here和here中的广泛讨论。
答案 1 :(得分:1)
为了在 tkinter 中接受用户的输入,我总是使用以下代码,结果万无一失 -
from tkinter import *
root=Tk()
Label(root,text='Your input prompt').pack()
t1=Text(root, height=2, width=8)
t1.pack()
现在是主要部分:
def value(t):
x=t.get('1.0','end-1c')
return x
显然,您需要在文本框中输入值后触发此操作,大概是使用显示“提交”或“确认”或其他内容的按钮。
def submit():
a=value(t1)
print(a)
Button(root, text='Submit', command=submit).pack()
一些注意事项:
希望你觉得这有用
答案 2 :(得分:0)
条目窗口小部件有get
方法,可用于在需要时获取值。你的"保存"函数只需要在写入文件之前调用此函数。
例如:
def save():
x_value = x.get()
y_value = y.get()
z_value = z.get()
...