如果你只是将Tkinter作为tk导入,你可以省去一些头痛。
尝试更改此选项:
from Tkinter import Tk, Frame, Entry, Button, Listbox, N, S, E, W
Import Tkinter as Tk
此外,您不需要导入
N, S, E, W
sticky = "nsew"
效果与
sticky = N+S+E+W
您的主要问题不是列表框没有填充框架,而是您的
self.frame
未填充根窗口。
首先,让我们删除所有无用的权重。因为你的
只被放置在
row=0, column=0
而且根窗口中没有其他小部件,因此不需要为其他行/列提供权重。
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
root.grid_rowconfigure(1, weight=1)
root.grid_rowconfigure(2, weight=2)
收件人:
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
然后,让我们更改帧的权重,以便列表框展开。
self.frame.grid_columnconfigure(0, weight=2)
self.frame.grid_rowconfigure(0, weight=2)
self.frame.grid_rowconfigure(1, weight=2)
self.frame.grid_rowconfigure(2, weight=2)
收件人:
self.frame.grid_columnconfigure(0, weight=1)
self.frame.grid_rowconfigure(2, weight=1)
这应该可以解决您的大小调整问题。
#!/usr/bin/env python
import Tkinter as tk
import datetime
class TkPersonalActivityLog(object):
def __init__(self, root):
self.master = root
self.master.rowconfigure(0, weight=1)
self.master.columnconfigure(0, weight=1)
self.frame = tk.Frame(self.master)
self.frame.grid(sticky="nsew")
self.frame.grid_columnconfigure(0, weight=1)
self.frame.grid_rowconfigure(2, weight=1)
self.entry = tk.Entry(self.frame, bg='#e3ecfc')
self.entry.grid(row=0, sticky="ew")
self.entry.focus_set()
self.savebutton = tk.Button(self.frame, text="Save and Minimize", fg="Black", command=self.cb_save_button)
self.savebutton.grid(row=1)
self.history = tk.Listbox(self.frame)
self.history.grid(row=2,sticky="nsew")
def cb_save_button(self):
act = (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), self.entry.get())
self.history.insert(0, ' '.join(act))
if __name__ == '__main__':
root = tk.Tk()
main = TkPersonalActivityLog(root)
root.mainloop()
此代码较短,通过使用
import Tkinter as Tk
.