我对tkinter,canvas和itemconfig有一种奇怪的行为。
我有一个小窗口,画布上有矩形,每个矩形都显示调色板的颜色。我为左派和左右设置了一个活动。鼠标右键,LMB选择一种颜色,RMB用所选的颜色交换点击的颜色。绑定事件工作正常,因为在此过程中执行的其他操作发生(实际的调色板颜色被交换)。
首先是LMB&人民币点击,矩形“填充”没有更新(或者至少没有刷新屏幕),但在第二次人民币点击时,颜色变化被反映(但颜色交换了两次)。
更新矩形的代码是:
app.paletteCanvas.itemconfig(app.paletteColorBoxes[newColor], fill=transformColor(app,app.drawColor))
app.paletteCanvas.itemconfig(app.paletteColorBoxes[app.drawColor], fill=transformColor(app,newColor))
app是主应用程序,paletteCanvas是打包在“调色板窗口”中的画布,在app.paletteColorBoxes中我保持矩形的索引要改变,newColor和app.drawColor是交换的原始颜色和颜色,最后transformColor只是将(R,G,B)事物转换为#RRGGBB字符串,以便itemconfig理解。
所以,一切似乎都运行正常,除了在第一次调用例程时没有完成刷新,但在第二次调用时刷新完成。
我尝试了各种各样的.update()和.update_idletasks(),但没有运气。
要完全测试此行为,您可以在以下位置查看完整的应用程序:
https://github.com/zayamatias/retrotool
行为不当的功能在retrofunctions.py / swapColor
中您需要打开图像,单击某种颜色并选择“平铺查看器/编辑器”,工具完成后(可能会失败,仍然是WIP)您将看到调色板窗口。
谢谢!
顺便说一句,如果有帮助的话我会使用Python 3.6.3。
答案 0 :(得分:0)
好的,最后问题不在于tkinter,而是将传递给itemconfig方法的值混合在一起......我的不好!