插入图像后标签的大小发生变化
Label's size changing after inserting an image
我正在尝试重构一张分为 6 个部分的图片,方法是将这些部分整齐地添加到垂直排列的 6 个标签中。图片具有与标签的确切尺寸,但在添加它们之后,要么标签变小,要么图像没有达到它们应有的尺寸,因此图片部分没有统一。为了证明这一点,我用我制作的函数检查了添加图像之前和之后标签的大小。
带有图像的标签代码、它们的大小和结果:
Lwidth = 512 #root.winfo_width()
Lheight = 115 #root.winfo_height() // 6
img1=Image.open('row-1.png')
bg1=ImageTk.PhotoImage(img1)
l1 = Label(root, image=bg1)
l1.pack(fill='both', expand=True)
l1.image = bg1
l1.update()
img2=Image.open('row-2.png')
bg2=ImageTk.PhotoImage(img2)
l2 = Label(root, image=bg2)
l2.pack(fill='both', expand=True)
l2.image = bg2
l2.update()
img3=Image.open('row-3.png')
bg3=ImageTk.PhotoImage(img3)
l3 = Label(root, image=bg3)
l3.pack(fill='both', expand=True)
l3.image = bg3
l3.update()
img4=Image.open('row-4.png')
bg4=ImageTk.PhotoImage(img4)
l4 = Label(root, image=bg4)
l4.pack(fill='both', expand=True)
l4.image = bg4
l4.update()
img5=Image.open('row-5.png')
bg5=ImageTk.PhotoImage(img5)
l5 = Label(root, image=bg5)
l5.pack(fill='both', expand=True)
l5.image = bg5
l5.update()
img6=Image.open('row-6.png')
bg6=ImageTk.PhotoImage(img6)
l6 = Label(root, image=bg6)
l6.pack(fill='both', expand=True)
l6.image = bg6
l6.update()
root.update()
结果:
这是我从没有图像的代码中得到的函数:
我完全确定问题不在图像上,我尝试了很多不同的方法来确保它们被正确分割,不会丢失一些部分...
问题是 tkinter 标签默认有一个 2px 宽的白色边框;这就是图像之间出现那些白线的原因。
要更改此设置,只需将 bd=0
(或 borderwidth=0
)添加到所有标签即可。像这样:l1 = Label(root, image=bg1, bd=0)
这是我的结果(忽略右边的白线,那只是我可怜的截图工具技能......):
我正在尝试重构一张分为 6 个部分的图片,方法是将这些部分整齐地添加到垂直排列的 6 个标签中。图片具有与标签的确切尺寸,但在添加它们之后,要么标签变小,要么图像没有达到它们应有的尺寸,因此图片部分没有统一。为了证明这一点,我用我制作的函数检查了添加图像之前和之后标签的大小。
带有图像的标签代码、它们的大小和结果:
Lwidth = 512 #root.winfo_width()
Lheight = 115 #root.winfo_height() // 6
img1=Image.open('row-1.png')
bg1=ImageTk.PhotoImage(img1)
l1 = Label(root, image=bg1)
l1.pack(fill='both', expand=True)
l1.image = bg1
l1.update()
img2=Image.open('row-2.png')
bg2=ImageTk.PhotoImage(img2)
l2 = Label(root, image=bg2)
l2.pack(fill='both', expand=True)
l2.image = bg2
l2.update()
img3=Image.open('row-3.png')
bg3=ImageTk.PhotoImage(img3)
l3 = Label(root, image=bg3)
l3.pack(fill='both', expand=True)
l3.image = bg3
l3.update()
img4=Image.open('row-4.png')
bg4=ImageTk.PhotoImage(img4)
l4 = Label(root, image=bg4)
l4.pack(fill='both', expand=True)
l4.image = bg4
l4.update()
img5=Image.open('row-5.png')
bg5=ImageTk.PhotoImage(img5)
l5 = Label(root, image=bg5)
l5.pack(fill='both', expand=True)
l5.image = bg5
l5.update()
img6=Image.open('row-6.png')
bg6=ImageTk.PhotoImage(img6)
l6 = Label(root, image=bg6)
l6.pack(fill='both', expand=True)
l6.image = bg6
l6.update()
root.update()
结果:
这是我从没有图像的代码中得到的函数:
我完全确定问题不在图像上,我尝试了很多不同的方法来确保它们被正确分割,不会丢失一些部分...
问题是 tkinter 标签默认有一个 2px 宽的白色边框;这就是图像之间出现那些白线的原因。
要更改此设置,只需将 bd=0
(或 borderwidth=0
)添加到所有标签即可。像这样:l1 = Label(root, image=bg1, bd=0)
这是我的结果(忽略右边的白线,那只是我可怜的截图工具技能......):