在 Tkinter 的输入框中设置默认值
Setting a Default Value in an Entry box in Tkinter
我正在 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
我的代码可以运行,但输入中没有默认值。
因为您在示例中创建了 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
。
您可以使用条目小部件的 insert
方法来插入您想要的任何值:
value = pd.value_counts(df['month'].values, sort=False)[1]
e1.insert(0, value)
您还可以使用 textvariable
属性关联 StringVar
或 IntVar
的实例,但大多数情况下,这只会创建一个您必须跟踪的额外对象.在这两种情况下,您都需要一个函数调用来设置和获取值,因此在这种情况下 textvariable
没有任何优势,需要额外的一行代码来创建变量。
v = IntVar()
e1 = Entry(master, text=v)
v.set(value)
我用过insert
这种方法
e1.insert(0, "a default value for e1")
e2.insert(0, "b default value for e2")
我正在 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
我的代码可以运行,但输入中没有默认值。
因为您在示例中创建了 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
。
您可以使用条目小部件的 insert
方法来插入您想要的任何值:
value = pd.value_counts(df['month'].values, sort=False)[1]
e1.insert(0, value)
您还可以使用 textvariable
属性关联 StringVar
或 IntVar
的实例,但大多数情况下,这只会创建一个您必须跟踪的额外对象.在这两种情况下,您都需要一个函数调用来设置和获取值,因此在这种情况下 textvariable
没有任何优势,需要额外的一行代码来创建变量。
v = IntVar()
e1 = Entry(master, text=v)
v.set(value)
我用过insert
这种方法
e1.insert(0, "a default value for e1")
e2.insert(0, "b default value for e2")