Tkinter标准库创建出来的窗口程序如果没有作出限制的话,是能够通过鼠标来对其进行大小拉伸来放大或者缩小尺寸的,那么这个时候窗口组件也是应该放大才可以。而下面会以tkinter画布组件为示例,来详细讲解该怎么让组件随窗口变化而缩放。
1.那么首先需要在代码之中将tkinter库导入,并且创建出来一个窗口对象,这个窗口标题和大小设置都可以。然后关键在于需要让其去绑定窗口监听事件,也就是当窗口变化时会处罚的函数,代码示例如下:
import tkinter as tk window = tk.Tk() first_load = True window.bind('<Configure>', window_resize)
2.接下来就是去编写窗口监听时触发的函数了,这个函数不需要去接收任何参数都可以,不过可以使用event来表示它是一个事件。在此函数之中需要先去定义两个变量来表示窗口大小初始值,然后再将它们作为窗口最小尺寸。
接着就是使用frame来在这个窗口之中创建出字窗口,这样才可以让窗口进行像素级的缩放。把创建出来的画布组件添加到子窗口之中,代码示例如下
def window_resize(event=None): window.minsize(width, height) frame1 = tk.Frame(window, width=360, height=340) frame1.pack_propagate(0) frame1.place(x=20, y=10) cv = tk.Canvas(frame1, bg='white',width=200,height=100)
3.那么到此窗口以及组件都创建好了,接下来还是在这个函数之中去编写代码。这段代码需要先获取到窗口当前高宽,然后去判断它相比于初始高宽是否有变化,有变化就使用config()方法计算出差值后在重新设置组件大小,最后去启动窗口事件循环即可,详细代码示例如下所示:
new_width = window.winfo_width() new_height = window.winfo_height() if save_width != new_width or save_height != new_height: frame1.config(width=new_width-40, height=new_height-60)
以上就是关于“Tkinter画布怎么和窗口一起变化?Python窗口程序Tkinter组件怎么随窗口缩放”的全部内容了,希望对你有所帮助。