Python中tkinter colorchooser仅运行一次且卡顿的问题求助
解决ColorChooser卡顿与PyWaffle兼容问题
问题出在Tkinter和Matplotlib的GUI事件循环冲突上,直接调用colorchooser.askcolor没有正确初始化Tkinter的主上下文,导致第一次选择后事件循环异常,后续操作卡顿。
修正步骤:
- 显式初始化Tkinter主窗口并隐藏,为颜色选择器提供合法的父上下文
- 完成颜色选择后销毁Tkinter窗口,避免与Matplotlib的事件循环冲突
修正后代码:
import matplotlib.pyplot as plt from pywaffle import Waffle from tkinter import Tk, colorchooser # 初始化Tkinter主窗口并隐藏 root = Tk() root.withdraw() colors_list = [] for i in range(1, 6): color_code = colorchooser.askcolor(title=f"Choose color {i}") # 处理用户取消选择的情况,避免添加None if color_code[1]: colors_list.append(color_code[1]) # 销毁Tkinter窗口,释放资源 root.destroy() # 确保至少有5种颜色(如果用户取消选择可以补默认色) while len(colors_list) < 5: colors_list.append("#cccccc") fig = plt.figure( FigureClass=Waffle, rows=1, columns=5, values=[1,1,1,1,1], colors=colors_list, title={"label": "Home Color Scheme", "loc": "center", "size": 20} ) plt.show()
关键说明:
root.withdraw()隐藏主窗口,只显示颜色选择器弹窗root.destroy()在颜色选择完成后清理Tkinter资源,防止与Matplotlib的GUI循环冲突- 添加了用户取消选择的处理逻辑,避免列表中出现
None导致绘图报错
内容的提问来源于stack exchange,提问作者Prixya
相关产品推荐
相关产品推荐

