【发布时间】:2020-12-07 09:14:10
【问题描述】:
我正在尝试制作一个 tkinter 应用程序(我的第一个真正的代码),但我在界面上遇到了一点问题。我想让我的小部件在窗口调整大小时动态调整大小。我通过编写一个调整 PIL 图像大小的函数,设法使我的背景图像调整自身大小以适应整个窗口大小,因为用户调整了窗口大小。这是函数:
def resizeimage(self,event) :
width, height = self.winfo_width(), self.winfo_height()
image = self.bg_image.resize((width,height))
self.image1 = ImageTk.PhotoImage(image)
self.bg_label.config(image = self.image1)
我已将此函数绑定到显示背景图像的标签,如下所示:
self.bg_image = Image.open("project_pics\\start_pg.png")
bg_image = ImageTk.PhotoImage(self.bg_image)
self.bg_label = Label(self,image=bg_image)
self.bg_label.image = bg_image
self.bg_label.bind('<Configure>',self.resizeimage)
self.bg_label.grid(sticky="nwse")
这里,self.bg_image 是要显示为背景的图像,self.bg_label 是显示图像的标签。我编写此代码来调整背景图像大小的原因是,当我在另一台计算机上运行我的应用程序时,由于新计算机具有不同的屏幕尺寸,因此背景图像不适合我想要的屏幕尺寸喜欢它。这个功能解决了这个问题,但后来我注意到了一个新问题。 屏幕上的其他小部件保持相同大小。因此,当窗口缩小时,您可以看到所有小部件保持相同大小,只是在较小的屏幕上聚集在一起。我知道我可以编写一些类似于resizeimage() 的函数来调整所有其他小部件的大小,使其与窗口成比例并类似于背景图像,将屏幕上的所有小部件绑定到这样的函数,但它看起来很乏味而且不是很高效的。我正在寻找更动态的解决方案。
这是窗口的正常外观:
这是缩小窗口时的样子:
我的问题是这样的。 有什么办法可以动态调整窗口上所有小部件的大小,这样它们就不会像图 2 中那样聚在一起,而是按窗口的比例调整自己的大小,这样缩小时它们看起来就像图 1,只是更小了? 我认为here 提出了类似的问题,但给出的解决方案并没有完全回答整个问题。
【问题讨论】:
标签: python python-3.x tkinter