如何获取一个条目小部件来保存我输入的内容?Python

2024-05-15 11:49:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个输入个人详细信息的条目小部件,但是我想将这些详细信息保存为变量,这样我就可以将它们写在一个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()

我的代码工作得非常好,但是它没有保存我输入的内容,更不用说保存在变量中了。很明显我丢失了很多代码,但是我不知道是什么代码。

另外,如果不是太多的话,我该怎么做一个按钮来继续下一行代码呢?


Tags: of代码textgetcolumnrootfnamelabel
2条回答

Entry小部件有一个get方法,可以在需要时用于获取值。您的“save”函数只需在写入文件之前调用此函数。

例如:

def save():
    x_value = x.get()
    y_value = y.get()
    z_value = z.get()
    ...

这个问题还没有得到回答,所以这里有一个完整的代码块来完成您的请求。

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()

它不是很优雅,但它完全按照您的要求,对您的版本进行最少的更改。

如果运行它,并在条目字段中输入1234、和5,然后单击我添加的submit按钮,并打印paramslist,您将得到:

>>> params
['1', '2', '4', '3', '5']

如果出于某种原因,您不希望在提交后关闭窗口,请省略root.destroy(),并从中删除它。

注意,getInput作为一个Button参数没有括号,因此它只在单击按钮时调用,而不是在执行此行时调用。

最后,我不知道你最后一个问题的意思是什么,“我如何制作一个按钮继续下一行代码”。最后添加的mainloop()内容确保(除其他外)在框关闭之前不会执行其余代码(它还启动一个收集事件并确保处理事件的循环)。因此,一旦单击submit并关闭窗口,其余代码就会执行。如果在mainloop()行之前或之后添加print('hi')语句,您将进一步理解这一点。如果在前面添加,字符串将与窗口的打开“同时”打印;如果在后面添加,字符串将在窗口关闭后打印。(有关mainloop()的更多信息,请查看堆栈herehere中的广泛讨论)

相关问题 更多 >