Tkinter矩形项配置填充更新并非每次都有效



我对tkinter、canvas和itemconfig有一个奇怪的行为。

我有一个小窗口,里面有一个装满矩形的画布,每个矩形都显示了调色板的颜色。我已经为left&鼠标右键,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))

应用程序是主要的应用程序,paletteCanvas是包装在"调色板窗口"中的画布,在app.paleteColorBoxes中,我保持矩形的索引以更改,newColor和app.drawColor是原始颜色和要交换的颜色,最后transformColor只是将一个(R,G,B)东西转换成#RRGGBB字符串,供itemconfig理解。

因此,一切似乎都很好,除了第一次调用例程时没有完成刷新,但第二次调用时完成了刷新。

我尝试了各种.update()和.update_idlettasks(),但没有成功。

要全面测试这种行为,您可以在以下位置查看完整的应用程序:

https://github.com/zayamatias/retrotool

行为不端的函数在反函数中.py/swapColor

你需要打开一个图像,点击一些颜色并选择"平铺查看器/编辑器",在工具完成后(可能会失败,仍在在制品中),你会看到调色板窗口。

谢谢!

顺便说一句,如果有帮助的话,我在Python 3.6.3上。

好的,所以最后问题不是tkinter,而是传递给itemconfig方法的值混淆了。。。我的坏!

最新更新