我有问题。我正在使用tkinter和python 2.7。如何在调整窗口大小后更改窗口小部件的长度?我有两个小部件:
Entry1(列= 0)和Entry2(列= 1)
Entry1具有固定宽度。 Entry2应该填充宽度的其余部分。不幸的是,它不起作用。
有没有办法做到这一点?
非常感谢提前。
代码:
from Tkinter import *
import ttk
root = Tk()
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
notebook = ttk.Notebook(root)
tab = Frame(notebook)
notebook.add(tab, text = "Tab 1")
notebook.grid(row=0,column=0, sticky="NSEW")
tab.grid_columnconfigure(0, weight =1)
tab.grid_rowconfigure(0, weight=1)
canvas_tab = Canvas(tab, width=500, height=100)
scroll_tab = Scrollbar(tab, command = canvas_tab.yview)
canvas_tab.config(yscrollcommand=scroll_tab.set)
scroll_tab.grid(row=0, column = 1, sticky = "NSE")
canvas_tab.grid(row=0, column = 0, sticky = "NSEW")
canvas_tab.grid_columnconfigure(0, weight=1)
frame = Frame(canvas_tab)
frame.grid_columnconfigure(1, weight=1)
Entry1 = Entry(frame, text = "", width=20, justify = CENTER)
Entry1.grid(row = 0, column = 0)
Entry1.insert(0, 'Entry 1')
Entry2 = Entry(frame, text = "", justify = CENTER)
Entry2.grid(row = 0, column = 1, sticky = "NSEW")
Entry2.insert(0, 'Entry 2')
def configure(event):
canvas_tab.itemconfig(root, width=event.width)
canvas_tab.create_window((0,0), anchor=NW, window=frame)
frame.update_idletasks()
canvas_tab.config(scrollregion = frame.bbox("all"))
canvas_tab.bind('<Configure>', configure)
root.mainloop()
答案 0 :(得分:0)
当我们使用'place'而不是'grid'时,可以使用相对高度和相对宽度参数来完成。
这有效:
Entry2=Entry(root,width=10)
Entry2.place(relheight=.2,relwidth=.45,relx=.5,rely=.28)
Entry2.insert(0, 'Entry 2')
地方通常被认为是非常繁琐的。 (您必须手动更改relx并依赖参数来修复它的相对位置。)