问题描述
我正在尝试在 pygame 中构建一个国际象棋游戏。对于典当促销,我决定使用函数“get_piece_name”,它打开一个带有按钮的 tkinter 窗口来选择“促销片”。
我想要的是让 tkinter 窗口出现在 pygame 窗口的顶部;并使传统知识获胜。当 pg 获胜时最小化。是。
脚本如下:
import pygame as pg
import tkinter as tk
def get_piece_name():
global name
name = ""
root = tk.Tk()
def destroy_win(string):
global name
name = string
root.destroy()
queen_bt = tk.Button(root,text="queen",command=lambda: destroy_win("queen"))
queen_bt.grid(row=0,column=0)
rook_bt = tk.Button(root,text="rook",command=lambda: destroy_win("rook"))
rook_bt.grid(row=0,column=1)
knight_bt = tk.Button(root,text="knight",command=lambda: destroy_win("knight"))
knight_bt.grid(row=0,column=2)
bishop_bt = tk.Button(root,text="bishop",command=lambda: destroy_win("bishop"))
bishop_bt.grid(row=0,column=3)
root.attributes('-topmost',True) ### win. is on top of every other one
root.mainloop()
return name
def main():
pg.init
pg.font.init()
WIN = pg.display.set_mode((500,500))
WIN.fill((0,0))
running = True
while running:
for event in pg.event.get():
if event.type == pg.QUIT:
running = False
if event.type == pg.MOUSEBUTTONDOWN and event.button == 1: # left-click on the screen
WIN.fill((0,0))
piece_name = get_piece_name()
font = pg.font.SysFont("Heveltica",50)
text = font.render(piece_name,True,(0,225,0))
WIN.blit(text,(200,200))
pg.display.update()
pg.quit()
if __name__ == "__main__":
main()
我也试过 root.lift()
,但只在启动时有效。我知道你可以这样使用它:root.lift(aboveThis=parameter)
。参数是 tkinter 窗口。当我尝试输入 pygame 窗口的名称时,它会引发错误:bad window path name "chess"
。有没有办法获取pygame窗口路径名并赋值为参数?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)