我正在尝试为我的项目编写四连体游戏。我使用tkinter
时没有任何经验。我使用的是grid()
布局,包含3行(标题显示为第一行,按钮显示为第二行,画布显示游戏显示为第三行)和6列。
我遇到的问题是使按钮出现在每一列的顶部。甚至第一个按钮也不在第一列的中间,并且每个下一个按钮的位置越来越多。我认为这些列的宽度应相同,因为它们都完全具有相同的按钮。
P1
是我的课程,拥有我打算更改的实际游戏板和行/列的数量。
我尝试过使用grid_rowconfigure
这样的方法:
self.grid_rowconfigure(1, weight=1)
但这似乎没有效果。
#Main.py
class Game:
def __init__(self, roows, coolumns):
self.rows = roows
self.columns = coolumns
self.gameTable = [["x" for x in range(self.columns)] for y in range(self.rows)]
self.which_row = [5 for x in range(self.columns)]
from tkinter import *
import Main
class Window(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.master = master
self.master.title("connect four")
self.grid()
Tytul = Label(self, text="Hello", font=("Helvetica", 24), fg="medium blue")
Tytul.grid(row=0, columnspan=6)
for i in range(P1.columns):
button = Button(self, text="▼")
button.grid(row=1, column=i)
#self.grid_rowconfigure(1, weight=1)
def draw_gametable(self):
canvas1 = Canvas(self, relief=FLAT, background="#D2D2D2",
width=P1.columns*100, height=P1.rows*100)
canvas1.grid(row=2, columnspan=6)
cellwidth = 100
cellheight = 100
for column in range(P1.columns):
for row in range(P1.rows):
if P1.gameTable[row][column] == "x":
color = "grey"
elif P1.gameTable[row][column] == "z":
color = "yellow"
elif P1.gameTable[row][column] == "c":
color = "Red"
x1 = column * cellwidth
y1 = row * cellheight
x2 = x1 + cellwidth
y2 = y1 + cellheight
canvas1.create_rectangle(x1, y1, x2, y2, fill="cornflower blue")
canvas1.create_oval(x1 + 2, y1 + 2, x2 - 2, y2 - 2, fill=color,
tags="oval")
if __name__ == "__main__":
P1 = Main.Game(6, 7)
root = Tk()
instance = Window(root)
instance.draw_gametable()
root.mainloop()
答案 0 :(得分:0)
您有7列,但使画布跨度只有6列。 resource.latestData
的意思不是“要跨越多少更多列”,而是“要跨越多少总共 列”。
如果让画布跨越所有7列,则所有内容都会对齐:
columnspan