You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:30:54