如何结合Tkinter启动窗口与Pygame数独游戏?黑屏问题求助
问题解决:Tkinter启动Pygame窗口黑屏
问题根源
你当前使用exec(open(...).read())在Tkinter的主线程中直接执行Pygame代码,这会导致两个GUI框架的事件循环(Tkinter的mainloop和Pygame的渲染/事件处理循环)互相阻塞,Pygame无法正常完成画面渲染流程,最终出现黑屏。
解决方案
改用subprocess模块启动独立进程运行Pygame脚本,让两个程序在各自的进程中独立运行,彻底避免事件循环冲突。
修改后的Tkinter启动代码
from tkinter import * import subprocess import sys import webbrowser fen = Tk() fen.geometry("700x600") fen.resizable(height=False, width=False) fen.iconbitmap('logo.png') fen.title("Sudoku Game") fen.configure(bg="#74D0F1") # 文本区域:标题“Sudoku Game” label2 = Label(fen, text="Sudoku Game", bg='#74D0F1', fg='black', font=("Arial", 40)) label2.place(x=215, y=160) # 文本区域:支持解谜功能! label1 = Label(fen, text="Solver Available !", bg='#74D0F1', fg='black', font=("Arial", 15)) label1.place(x=500, y=450) # PLAY按钮:启动独立进程运行Pygame数独 def ouvrir_grille(): # 使用当前Python解释器启动Pygame脚本 subprocess.Popen([sys.executable, "/Users/nikitakarpachev/Desktop/Sudoku.py/test12.py"]) button = Button(fen, text="PLAY", command=ouvrir_grille, font=("Arial", 15), width=8, height=3) button.place(x=285, y=280) # “游戏说明”按钮 img = PhotoImage(file='icons8-info-100.png') rules = Button(fen, image=img, command=lambda: webbrowser.open("https://sudoku.com/how-to-play/sudoku-rules-for-complete-beginners/"), highlightthickness=0, bd=0, border=0, relief="flat") rules.place(x=500, y=50) fen.mainloop()
额外检查项
- 确保你的Pygame脚本
test12.py可以单独正常运行(直接用命令行执行或双击能显示数独网格),排除脚本自身的渲染逻辑问题。 - 确认脚本路径
/Users/nikitakarpachev/Desktop/Sudoku.py/test12.py完全正确,避免因路径错误导致无法启动Pygame程序。
内容的提问来源于stack exchange,提问作者Zay
相关产品推荐
相关产品推荐

