【发布时间】:2019-04-30 16:07:11
【问题描述】:
我在一个框架中设置了 2 个面板:
frameA = Frame(master)
frameA.pack(side=LEFT, fill=BOTH, expand=YES)
frameB = Frame(master)
frameB.pack(side=RIGHT, fill=BOTH, expand=YES)
recale = 0.4
self.img = ImageTk.PhotoImage(img.resize((int(rescale*width), int(recale*height)), Image.ANTIALIAS)
self.panelA = Label(frameA, image=self.img)
self.pabelA.pack(side=LEFT, fill=BOTH, expand=YES)
self.panelB = Label(frameB, image=self.img)
self.pabelB.pack(side=LEFT, fill=BOTH, expand=YES)
现在,两个面板的大小由我调整为 0.4 倍于原始大小的图像大小决定。如何动态设置rescale,以便当我按下最大化按钮时每个面板的宽度占据主框架的整个宽度(这不是我制作的按钮,而是旁边的小方形按钮来最小化,并在右上角关闭)在 GUI 上?
【问题讨论】:
-
您能否提供minimal reproducible example 来说明您的问题?
-
如果您在函数中创建
PhotoImage,那么您必须分配给类变量(即self.photo = ImageTk.PhotoImage(img)),因为当分配给局部变量时,存在将PhotoImage从内存中删除的错误。请参阅页面底部的NotePhotoImage -
可以获取屏幕宽度
master.winfo_screenwidth()和设置窗口大小master.geometry('{}x{}'.format(x, y)) -
我已经解决了你的第一条评论,@furas。对于您的第二条评论,我如何使用该信息设置
rescale以及如何动态设置? -
在问题中,您对
rescale只字未提,但关于窗口大小和框架大小。它有所作为。你需要window.width和bind('<Configure>", on_resize)