Tkinter 以编程方式调整框架大小

问题描述

我有一个 toplevel 窗口,我在其中创建了一个 canvas一个 frame支持滚动功能

部分 canvasframe 代码如下所示:

    ##Canvas
    self.canvas = tk.Canvas(self.toplevel,borderwidth=0)
    self.canvas.bind_all("<MouseWheel>",self.__on_mousewheel)
    self.canvas.pack(side="left",fill="both",expand=True)

    ##Frame 
    self.frame = tk.Frame(self.canvas,background="red")
    self.frame.bind("<Configure>",lambda event,canvas=self.canvas: self.__on_frame_configure())
    self.canvas.create_window((1,1),window=self.frame,anchor="n")

......

代码中的“稍后”我用动态生成的复选按钮数量填充 frame。 (取决于用户输入)

问题 #1

我无法检索 textcheckbuttons 属性的宽度(最好以像素为单位)。我找到了解决方法

问题#2

我想以编程方式调整 frame 的宽度。

    self.frame.update()


    print("Im here",self.frame.winfo_width())
    self.frame.configure(width=self.frame.winfo_width() + 30)
    print("Now im here",self.frame.winfo_width())


    self.canvas.configure(width=self.frame.winfo_width())
    self.canvas.configure(height=self.frame.winfo_height())

打印语句的结果:

Im here 904

Now im here 934

当我检查 gui 时,我注意到只有那个画布被调整了大小。

gui 右侧部分的图片,应该用 frame 的红色背景填充。

Pic of the right part of the gui which is supposed to be filled in with the red background of the frame

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...