问题标签 [tkinter-canvas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
721 浏览

tkinter - 特金特;在画布中使用滚动条

我正在尝试在我的程序的一部分中创建一个滚动条。父框架有三个标签框架小部件,其中一个需要显示多达 50 个选项菜单,因此需要滚动条。

我知道你不能使用滚动条来滚动标签框架,所以在这个标签框架内我创建了一个可以滚动的画布。然后我在画布内插入了一个框架,我将用它来显示选项菜单。然后我将滚动条附加到画布上,滚动条放置在标签框架内。问题是滚动条看起来很实用,但只有前 10 个选项菜单可见,无论我滚动了多少。下面是一个例子:

0 投票
1 回答
20947 浏览

python - 如何更新 FigureCanvasTkAgg 的内容

我正在使用 Tkinter FigureCanvasTkagg 绘制一些数据matplotlib。当按下按钮时,我需要清除绘制数据并绘制新数据的图形。

这是代码的绘图部分(之前定义了一个 App 类):

如何更新此类画布的内容?

0 投票
1 回答
25429 浏览

python - 可以在创建后更改 Canvas 对象的属性吗?

我正在尝试模拟一个美国交通信号灯,矩形上有 3 个圆圈,全部绘制在一组画布上。模拟应该通过按以下顺序每 2 秒更改一次显示的光来反映“动画”:绿色 > 黄色 > 红色 > 绿色,以此类推。

我能想到的唯一方法是使用 canvas.move()、canvas.after()、canvas.update() 模式来移动填充的椭圆对象以一次叠加一个未填充的圆圈。我已经得到了逻辑,以适当的速度和正确的顺序移动一个圆圈。问题是,我只是实例化了一个充满“绿色”的圆圈,但我无法使用这种方法将其更改为“黄色”或“红色”。必须每 2 秒使用 canvas.delete("filled") 并在一个新的地方用不同的填充重新绘制它似乎很愚蠢,因为对于这样一个简单的程序来说,这需要做很多事情。

问题 1:有没有一种方法可以随意更改fill填充的 Canvas 对象的选项,使用某种方法或其他方式?

问题 2:我是否错误地处理了这种情况?有没有更好的方法来模拟这个?

0 投票
1 回答
492 浏览

python - 有没有办法在 Tkinter 中为画布设置“默认颜色”?

有没有一种方法可以设置画布对象(线条、矩形等)的默认颜色,而无需单独设置每个对象?我知道默认颜色是黑色,我基本上只是想改变它,以便我随后创建的所有东西都是绿色的。有没有办法在 Python 中使用 Tkinter 来做到这一点?

0 投票
1 回答
4256 浏览

python - 从 Tkinter 打印画布

我创建了一个只有我想打印的矩形和标签的画布。我只找到了如何将画布保存到 postscript 文件中,如下所示:

如有必要,如果这更容易,我很乐意打印整个窗口。

如何打印画布?

该程序将在 Windows XP 或 7 上使用。

0 投票
1 回答
30391 浏览

python - Tkinter - 将文本插入画布窗口

我有一个 Tkinter 画布,其中填充了使用create_textcreate_window方法创建的文本和画布窗口或小部件。我放置在画布上的小部件是文本小部件,我想在它们被创建和放置后插入文本。如果可能的话,我不知道该怎么做。我意识到您可以在创建后使用 编辑它们canvas.itemconfig(tagOrId, cnf),但不能以这种方式插入文本。有针对这个的解决方法吗?

0 投票
1 回答
4728 浏览

python - tkinter canvas:文本对象可变字体大小?

我正在使用 tkinter 画布制作一些漂亮的图片,并在圆圈顶部覆盖文本,如下图所示:

http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2012/11/6/1352220546059/Causes-of-deaths-graphic-008.jpg

我希望字体大小取决于圆圈大小所依赖的相同数字。

我的问题是,当我使用上面的代码时,覆盖的文本对于每个文本对象都是一个恒定的大小。文本本身是正确的,因为它显示了我希望字体大小的数字,只是字体大小不正确。我已经尝试在大小定义中放入常量整数(按预期工作),并在上述两行代码之后立即添加一个 del(tempfont),但我还没有找到解决这个问题的方法。

我究竟做错了什么?

这是一个重现问题的独立小程序:

要点是recurtext递归地调整字体大小,并以该大小写shows出字体大小......或者我认为它应该。也许这是 tkinter 的一个错误,但我仍然抱有一些希望,即我是这里逻辑错误的人。

0 投票
1 回答
3507 浏览

python - 在 Python tkinter 画布上删除行

单击鼠标右键时,我试图让用户删除行。我已将按钮 3 按下事件绑定到画布,并将其传递给以下函数

但是,当我右键单击这些行时,什么也没有发生。我已经单独测试了字典并且行对象被正确存储。

这是我的绑定:

每个请求来自字典初始化的一些其他片段

对于线条创建,我有两个处理程序,一个 on click 和一个 on release,它在两个坐标之间绘制线条

字典在这里打印得很好。请注意,这些都是一个类中的所有功能。

0 投票
1 回答
15584 浏览

python - Tkinter 拖放

我正在开发一个拖放功能,它允许我在画布上移动项目。我让它工作(有点)但我只移动了一点,但线在屏幕上射击(最终离开了可见部分画布,所以我无法到达它。我不确定从这里去哪里。下面是我到目前为止创建的拖放代码:

dragInfo 是我用来存储数据的字典。最初我认为将画布坐标转换为窗口坐标会有所帮助,但它的作用与没有这些东西相同。

0 投票
1 回答
1028 浏览

python - 在 Tkinter 中将画布项目连接在一起

我想做的是在画布上视觉“连接”项目。例如,允许用户从一个图像到第二个图像画一条线,然后将这两个图像连接起来。

这里的连接是指如果用户单击并移动一个图像,则线会调整大小以保留连接。本质上,图像将成为线的端点,并且可以将多个图像连接到第三个图像。

有没有办法检测一条线是否接触到图像的边缘?

这让我想到了第二个问题,有没有办法以这种动态方式调整画布上的线条大小?我尝试过的解决方案基本上是删除原始行并重新绘制新行,但这并不是我想要的。