在Tkinter的“输入”框中设置默认值

时间:2015-08-10 19:14:58

标签: python tkinter widget set user-input

我正在使用Python中的Tkinter创建一个用户输入框。我从这里得到了基本代码:http://www.python-course.eu/tkinter_entry_widgets.php

提供:

from tkinter import *

def show_entry_fields():
   print("First Name: %s\nLast Name: %s" % (e1.get(), e2.get()))

master = Tk()
Label(master, text="First Name").grid(row=0)
Label(master, text="Last Name").grid(row=1)

e1 = Entry(master)
e2 = Entry(master)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

Button(master, text='Quit', command=master.quit).grid(row=3, column=0, sticky=W, pady=4)
Button(master, text='Show', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4)

mainloop( )

并为我的目的修改它。我的问题是在输入中设置一个默认变量。

我看了一遍,似乎常见的解决方案是使用v = Tkinter.StringVar()和v.set(“Default”)。但是,我使用整数,所以我改为:

v = Tkinter.IntVar()
e1 = Entry(master)
v.set(pd.value_counts(df['month'].values, sort=False)[1])

,其中

In [29]: pd.value_counts(df['month'].values, sort=False)[1]
Out[29]: 247

我的代码运行但输入中没有默认值。

3 个答案:

答案 0 :(得分:3)

由于您在示例中创建了IntVar(),您可以创建IntVar()并将其设置为条目的text值(以便它成为默认值)。示例 -

from tkinter import *

def show_entry_fields():
   print("First Name: %s\nLast Name: %s" % (e1.get(), e2.get()))

master = Tk()
Label(master, text="First Name").grid(row=0)
Label(master, text="Last Name").grid(row=1)

v = IntVar()
e1 = Entry(master, text=v)
e2 = Entry(master)
v.set(100)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

Button(master, text='Quit', command=master.quit).grid(row=3, column=0, 

sticky=W, pady=4)
Button(master, text='Show', command=show_entry_fields).grid(row=3, 

column=1, sticky=W, pady=4)

mainloop( )

以上代码为条目e1设置默认值100,同样如果需要,为e2创建一个新的IntVar()

如果你需要字符串,你也可以查看StringVar

答案 1 :(得分:2)

您可以使用条目小部件的insert方法插入所需的任何值:

value = pd.value_counts(df['month'].values, sort=False)[1]
e1.insert(0, value)

您还可以使用StringVar属性关联IntVartextvariable的实例,但大多数时候只需创建一个您必须跟踪的额外对象。在这两种情况下,您都需要对set进行函数调用并获取值,因此在这种情况下textvariable没有任何优势,需要一行额外的代码来创建变量。

v = IntVar()
e1 = Entry(master, text=v)
v.set(value)

答案 2 :(得分:0)

我使用这种方式使用insert方法

e1.insert(0, "a default value for e1")
e2.insert(0, "b default value for e2")