更改tkinter输入框的宽度以匹配窗口的宽度

时间:2015-06-17 20:12:20

标签: python-3.x tkinter

from tkinter import *

def show_entry_fields():
    e2.insert(10,(e1.get()))

master = Tk()
master.minsize(width=900, height=20)

Label(master, text="Paste").grid(row=0)
Label(master, text="Output").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='Convert', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4)    

mainloop( )

我刚开始学习Python和tkinter。我想让两个Entry框与整个窗口一样宽。但即使我使窗口变大,Entry字段也被限制在“网格”的第一列,并且不会扩展。如何使输入字段更宽?

2 个答案:

答案 0 :(得分:1)

来自http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/grid-config.html

w.columnconfigure(N,option = value,...)

weight要使列或行可伸缩,请使用此选项并提供一个值,该值在分配额外空间时给出此列或行的相对权重。例如,如果窗口小部件w包含网格布局,这些行将分配额外空间的四分之三到第一列,四分之一到第二列:

w.columnconfigure(0, weight=3)
w.columnconfigure(1, weight=1)

如果未使用此选项,则列或行不会拉伸。

所以在你的情况下

master.columnconfigure(1, weight=1)

以及更新e1(和e2)的粘性属性,如@BryanOakley所指出的那样:

e1.grid(row=0, column=1, sticky=W+E)

应该这样做。

答案 1 :(得分:0)

我有一个类似的例子,你可以试试这个:

from Tkinter import *



root = Tk()

row1 = Frame(root)
row1.grid(row=0, column=0, sticky=N+S+E+W)

row2 = Frame(root)
row2.grid(row=1, column=0, sticky=N+S+E+W)

Label1 = Label(row1,text = "First")
Label2 = Label(row2,text = "Second")

entry1 = Entry(row1)
entry2= Entry(row2)

row1.pack(fill=X)
Label1.pack(side = LEFT)
entry1.pack(side = LEFT,fill=X,expand = True)
row2.pack(fill=X)
Label2.pack(side = LEFT)
entry2.pack(side = LEFT,fill=X,expand = True)


root.mainloop()