有没有办法在 Tkinter 中绘制非 canvas 线?

Is there a way of drawing non-canvas lines in Tkinter?

您好!

我一直在 StackExchange 和其他一些论坛上寻找我问题的答案,但找不到任何相关内容,所以我在这里发布我的问题。

我想做的是绘制与其他 Tkinter 小部件位于同一层的线条。我目前正在编写一个界面,其中某些小部件需要在视觉上相互连接(NodeBox 样式或 Quartz Composer 样式)。
Shows the connectors (noodles) present in Quartz Composer. (I'm not necessarily looking for curved lines, straight is more than enough.)

问题是使用 canvas 小部件太复杂了(我会使用很多小部件,所以我认为将它们全部嵌入 canvas 并不是一个真正的选择).我正在寻找类似于分隔小部件但允许对角线并由坐标定义的东西。我正在考虑创建一个执行此操作的自定义小部件,但我不确定从哪里开始。另一种解决方案可能是在非 canvas 小部件上设置一个透明的 canvas ,但这会使鼠标单击事件复杂化很多。我不知道哪个选项最好。

关于如何使用 canvas 小部件绘制线条有什么想法吗? (或者关于如何创建执行此操作的自定义小部件?)

您唯一合理的画线选择是 canvas。如果没有 canvas,您可以使用分隔符和 place 模拟水平或垂直线,但不能模拟对角线。