Tkinter矩形itemconfig填充更新每次都不起作用

时间:2017-11-14 22:13:27

标签: tkinter tkinter-canvas

我对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。

1 个答案:

答案 0 :(得分:0)

好的,最后问题不在于tkinter,而是将传递给itemconfig方法的值混合在一起......我的不好!