为什么框架不显示在 tkinter 上
Why is frame not displaying on tkinter
我正在尝试构建 2048,
我制作的 GUI 没有问题,但它只显示单元格,而不显示我创建的分数框架。
仔细查看,我自己也找不到任何问题。我相信我正确地创建了框架和标签,我认为它写在正确的位置,但我终究看不出它有什么问题。
在我继续之前有人可以告诉我我做错了什么吗?
import tkinter as tk
class Game(tk.Frame):
def __init__(self):
tk.Frame.__init__(self)
self.grid()
self.master.title("2048")
self.main_grid = tk.Frame(
self, bg="#a5c6e2", bd=3, width=600, height=600
)
self.main_grid.grid(pady=(100, 0))
self.make_GUI()
self.mainloop()
def make_GUI(self):
self.cells = []
for i in range(4):
row = []
for j in range(4):
cell_frame = tk.Frame(
self.main_grid,
bg="#5593c8",
width=150,
height=150
)
cell_frame.grid(row=i, column=j, padx=5, pady=5)
cell_number = tk.Label(self.main_grid, bg="#3d84bf")
cell_number.grid(row=i, column=j)
cell_data = {"frame": cell_frame, "number":cell_number}
row.append(cell_data)
self.cells.append(row)
score_frame = tk.Frame(self)
score_frame.place(relx=0.5, rely=45, anchor="center")
tk.Label(
score_frame,
text="score",
font="helvetica"
).grid(row=0)
self.score_label = tk.Label(score_frame, text="0", font="helvetica")
self.score_label.grid(row=1)
Game()
问题在 score_frame.place(relx=0.5, rely=45, anchor="center")
。 relx/rely 只能是 0.0 到 1.0 之间的值,因为它们与您的 window 尺码有关。
将依赖设置为 45 将使您的标签在 window.
之外大约 45 window 尺寸
我正在尝试构建 2048, 我制作的 GUI 没有问题,但它只显示单元格,而不显示我创建的分数框架。 仔细查看,我自己也找不到任何问题。我相信我正确地创建了框架和标签,我认为它写在正确的位置,但我终究看不出它有什么问题。 在我继续之前有人可以告诉我我做错了什么吗?
import tkinter as tk
class Game(tk.Frame):
def __init__(self):
tk.Frame.__init__(self)
self.grid()
self.master.title("2048")
self.main_grid = tk.Frame(
self, bg="#a5c6e2", bd=3, width=600, height=600
)
self.main_grid.grid(pady=(100, 0))
self.make_GUI()
self.mainloop()
def make_GUI(self):
self.cells = []
for i in range(4):
row = []
for j in range(4):
cell_frame = tk.Frame(
self.main_grid,
bg="#5593c8",
width=150,
height=150
)
cell_frame.grid(row=i, column=j, padx=5, pady=5)
cell_number = tk.Label(self.main_grid, bg="#3d84bf")
cell_number.grid(row=i, column=j)
cell_data = {"frame": cell_frame, "number":cell_number}
row.append(cell_data)
self.cells.append(row)
score_frame = tk.Frame(self)
score_frame.place(relx=0.5, rely=45, anchor="center")
tk.Label(
score_frame,
text="score",
font="helvetica"
).grid(row=0)
self.score_label = tk.Label(score_frame, text="0", font="helvetica")
self.score_label.grid(row=1)
Game()
问题在 score_frame.place(relx=0.5, rely=45, anchor="center")
。 relx/rely 只能是 0.0 到 1.0 之间的值,因为它们与您的 window 尺码有关。
将依赖设置为 45 将使您的标签在 window.
之外大约 45 window 尺寸