学编程的中年大叔 2022-04-06 19:35 采纳率: 50%
浏览 63

ttk.Treeview和DateEntry同在一个界面时会出现的问题

当点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()


运行结果及报错内容

img

我的解答思路和尝试过的方法

我试过很多方法,只有在左边这个frame是treeview,且右边这个frame是含有DateEntry控件时,才会出现这个问题,只有一个条件时不会发生。

我想要达到的结果

python入门,希望网友们帮忙看看这个是什么回事?找问题找好久了,都没解决。

  • 写回答

1条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-04-06 20:10
    关注
        self.pack(fill=tk.BOTH,expand=1)
    
        # 在这框架中添加一个DateEntry控件
    
        DateEntry(self, background='gold',foreground='blue').grid(row=0,column=0)
    

    你这两种布局方式混用啊,都换成pack或者grid吧

    评论

报告相同问题?

问题事件

  • 创建了问题 4月6日

悬赏问题

  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵