Python 'grid()' 忽略 row/column/sticky 选项

Python 'grid()' ignores row/column/sticky options

我正在尝试制作一款小纸牌游戏。这是一个玩家,对抗 CPU,就这么简单。一个游戏。但是,如果不按规则玩游戏,游戏就没有乐趣,在这种情况下,.grid() 不想按规则玩 (.grid(row, column, sticky)。代码执行正常,console报错,编译,执行,"works"完全。但是,图像标签根本没有移动。

注意:我不确定这是因为我用来显示图像的方法,如果它不适用于图像,或者它只是简单的错误。

这是代码和输出。

Python

crdImg = []
usrStk = None
cpuStk = None
i = 1

#define cards

while i < 57:
  i = i + 1
  crdImg.append('img/cards/%s.png' % (i - 1))

usrStk = crdImg[54]
cpuStk = crdImg[55]

#define card images

usrCrdImg = Image.open(usrStk)
usrCrdBg = ImageTk.PhotoImage(usrCrdImg)
usrCrd = tkinter.Label(self, text="", image=usrCrdBg, borderwidth=1)
usrCrd.grid(row=4, column=4)
usrCrd.image = usrCrdBg
usrCrd.pack()

输出

您似乎首先使用 grid 定位标签,然后使用 pack 覆盖该位置。不要同时使用 gridpack 布局管理器!

删除行 usrCrd.pack() 并将 CardGame(root).pack() 更改为 CardGame(root).grid(),然后它应该可以工作。

但是请注意,除非您将内容放入其他行和列,否则 usrCrd.grid(row=4, column=4) 仍会将卡片放在左上角,因为其他行和列的宽度和高度为零。