用于牌类游戏的Python GUI

3 投票
4 回答
9383 浏览
提问于 2025-04-17 12:31

我打算用Python写一个纸牌游戏,现在在找图形用户界面(GUI),我对Python还很陌生。

到目前为止,我试过两个GUI:TK(也叫TKinter)和wxPython

但这两个似乎都不能做到我想要的,如果我错了请纠正我

拖动一个包含卡片图像的面板

而且这不仅仅是拖动的问题。具体情况是:

  1. 我想把卡片放在一个容器里。这个容器应该能显示卡片的正面和背面,所以我希望每张卡片都是一个面板,而不是单纯的图片。
  2. 图片应该可以有透明的区域(卡片的角是圆的)。
  3. 这个面板(容器)也应该是透明的(这样卡片可以在不同的背景颜色上拖动,比如桌子上其他的卡片等等)。

TKinter:据我了解,它不能做到第3点。

wxPython:据我了解,它不能做到第2点。

我可以继续一个个去尝试不同的GUI,但这真的很耗时间,所以我有几个问题:

  1. TKinter和wxPython真的有这些不足吗?
  2. 如果是的话,那我该用哪个GUI呢?

我听说过pygame,但我对GUI的要求其实并不高。Swing(Java)可以做到这些,而它也不是专门为游戏设计的。

4 个回答

1

Tkinter可以处理透明的GIF图片。不过,你提到的“容器”要求有点难以理解。我不明白透明和能否在不同颜色的背景上拖动它有什么关系。

当然,你可以在画布上把一些对象(比如图片、圆角矩形等)组合在一起,这些对象之间或者周围可以留空白。而且你也可以画圆角并拖动这些对象。

6

wxPython可以实现透明效果,你只需要使用透明的PNG图片。

png = wx.Image(imageFile, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
wx.StaticBitmap(self, -1, png, (10, 5), (png.GetWidth(), png.GetHeight()))

在wxPython窗口中显示PNG图片

9

既然你想写一个游戏,我建议你不要使用图形用户界面(GUI)库。相反,你应该寻找一些游戏库,比如 PyGamePyOpenGlKivy(还有其他的)。这些库都能满足你的需求。

撰写回答