当点button时,会出现左边的frame(或者treeview)向右边的frame扩展
问题相关代码:
import tkinter as tk
from tkinter import ttk
from tkcalendar import DateEntry
class datesel_frame(tk.Frame):
def __init__(self,parent):
super().__init__(parent)
self.config(background="blue")
self.pack(fill=tk.BOTH,expand=1)
# 在这框架中添加一个DateEntry控件
DateEntry(self, background='gold',foreground='blue').grid(row=0,column=0)
def on_update(aframe):
for widget in aframe.winfo_children():# 先删掉原来的datesel_frame
widget.destroy()
datesel_frame(aframe) #再创建一个新的datesel_frame
if __name__ == '__main__':
root=tk.Tk()
root.geometry("800x500")
#为了布置窗体,做了三个子框架frame
f0 = tk.Frame(root,background="cyan",height=10,borderwidth=1)
f0.pack(expand=0,fill=tk.X,anchor=tk.NW)
f1 = tk.Frame(root,background="gold", borderwidth=1)
f1.pack(side=tk.LEFT,expand=0,fill=tk.Y,anchor=tk.N)
f2 = tk.Frame(root,background="black",borderwidth=1)
f2.pack(side=tk.LEFT,expand=1,fill=tk.BOTH)
#第一个框架放了一个Button,作用师先删除框架f2中的frame之后,再向其放另外一个已定义好的frame
tk.Button(f0,text="先删除再加载datesel_frame",command=lambda:on_update(f2)).pack()
#第二个框架增加一个ttk.TreeView,只有这个框架放treeview才会出现这种情况
tv_prjview = ttk.Treeview(f1,show="headings",columns=("col1","col2","col3"))
tv_prjview.pack(fill=tk.BOTH,expand=1)
tv_prjview.heading("col1",text="列1")
tv_prjview.heading("col2",text="列2")
tv_prjview.heading("col3",text="列3")
# 第三个框架加载一个已经定义好带有DateENtry控件的frame,一定是带有DateEntry才会出现这种情况
datesel_frame(f2)
root.mainloop()
运行结果及报错内容
我的解答思路和尝试过的方法
我试过很多方法,只有在左边这个frame是treeview,且右边这个frame是含有DateEntry控件时,才会出现这个问题,只有一个条件时不会发生。
我想要达到的结果
python入门,希望网友们帮忙看看这个是什么回事?找问题找好久了,都没解决。