Tkinter使用pack(side='right')无法让紫色方块靠右显示的问题求助
Tkinter使用pack(side='right')无法让紫色方块靠右显示的问题求助
我写了一段Tkinter代码,想要让紫色小方块靠右显示,但不知道为什么它一直停在窗口中间。明明已经给方块的pack()方法加了side='right'属性,运行后还是没达到预期效果,麻烦大家帮我看看哪里出问题了?
我的代码如下:
import tkinter as ttk import tkinter as tk from tkinter import* class WebsiteGUI: def __init__(self, root): self.root = root self.root.title('GUI') self.root.attributes('-fullscreen',False ) main_screen = tk.Frame(root,height=1080, width= 1920,background = '#e4e4e4', ) main_screen.pack() screen2 = tk.Frame(main_screen,height=100, width= 100, background = '#472882') screen2.pack(side= 'right', fill ='both', padx=10, pady=5, expand=True) root= ttk.Tk() WebsiteGUI(root) root.geometry('1920x1080') root.mainloop()
问题分析与解决办法
其实问题出在你的主容器main_screen上!你给它设置了1920x1080的尺寸,但调用pack()时没加任何填充参数,这导致main_screen并没有真正占满整个窗口——它只是包裹住子组件的大小,然后默认居中显示在窗口里。这样一来,紫色方块虽然在main_screen里靠右了,但main_screen本身在窗口中间,看起来方块就也在中间了。
解决起来很简单,只需要修改main_screen的pack()调用,加上fill='both'和expand=True,让它占满整个窗口空间:
main_screen.pack(fill='both', expand=True)
另外,如果你只是想让紫色方块保持100x100的大小靠右,而不是自动拉伸填充空间,建议把screen2的expand=True去掉,不然它会填满main_screen的右侧区域。修改后的screen2代码可以是:
screen2.pack(side='right', padx=10, pady=5)
调整后紫色方块就能乖乖待在窗口右侧啦!
备注:内容来源于stack exchange,提问作者Uon




