Eri*_*idt 5 python tkinter python-3.x
我想创建一个可以全屏和任何其他窗口大小播放的游戏。为此,我有代码创建一个框架、两个按钮和一个标签。我希望按钮和标签位于框架的中心,但我不知道如何做到这一点。
作为临时解决方案,我在按钮顶部放置了一个空的黑色标签,但现在这不适用于我的想法。
这是我现在拥有的代码:
import tkinter as tk
def startgame():
pass
mw = tk.Tk()
mw.title('The Game')
back=tk.Frame(master=mw, width=500, height=500, bg='black')
back.pack_propagate(0)
back.pack(fill=tk.BOTH, expand=1) #Adapts the size to the window
#Here I had the label
go = tk.Button(master=back, text='Start Game', command=startgame, bg='#111', fg='red')
go.pack()
close = tk.Button(master=back, text='Quit', command=mw.destroy, bg='#111', fg='red')
close.pack()
info = tk.Label(master=back, text='Made by me!', bg='red', fg='black')
info.pack()
mw.mainloop()
Run Code Online (Sandbox Code Playgroud)
问题:如何不断将按钮等设置在中间?
Bry*_*ley 12
有很多方法可以将小部件居中放置在另一个小部件中。在以下示例中,假设您希望back保持其原始大小,并使其在根窗口中居中。一旦您将这个小部件居中,您就可以专注于将内部小部件置于其中,无论您如何选择,框架都将保持居中。
注意:要back缩小以适应按钮(同时仍保持居中),请删除以下行:
back.pack_propagate(0)
Run Code Online (Sandbox Code Playgroud)
使用 pack,您希望打开扩展 ( expand=True) 但不让小部件填充其区域 ( fill="none")。
back.pack(fill="none", expand=True)
Run Code Online (Sandbox Code Playgroud)
使用网格,该技术是创建一个 3x3 网格,框架位于中心单元格中。然后,您必须确保除中心行和列之外的所有行和列都被赋予权重,以便任何额外的空间都进入它们而不是进入中心:
back.grid(row=1, column=1)
mw.grid_rowconfigure(0, weight=1)
mw.grid_rowconfigure(2, weight=1)
mw.grid_columnconfigure(0, weight=1)
mw.grid_columnconfigure(2, weight=1)
Run Code Online (Sandbox Code Playgroud)
可以说最简单的解决方案是使用place. 使用 place 您只需指示 tkinter 将小部件的中心放置在 0.5 的相对 x 和 y 位置
back.place(relx=.5, rely=.5, anchor="center")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21563 次 |
| 最近记录: |