繁体   English   中英

tkinter 不绘制带有负点的形状

[英]tkinter not drawing shapes with negative points

这可能是一个非常愚蠢的问题,但我在使用 tkinter 时遇到了一些麻烦。 我对使用 tkinter 很陌生,想在空闲时间学习一些我没有太多的东西。 我已经设置了画布和所有东西,但当我尝试敢于用负点绘制一个矩形时,我已经把它放在泡菜里了。 我不知道为什么,它就是不画任何东西。

我想做的是在彼此下方绘制一个矩形。

我附上了下面的代码。 它绘制了用绿色填充的矩形,但是当我尝试绘制用红色填充的矩形时,什么也没有出现。

非常感谢您的帮助。

from tkinter import *

mainWindow = Tk()

drawingCanvas = Canvas(mainWindow, width=300, height=300)

drawingCanvas.pack()

drawingCanvas.create_rectangle(50, 25, 150, 75, fill="green")

drawingCanvas.create_rectangle(50, -200, 150, -100, fill="red")

mainloop()

我尝试使用在线绘图仪演示来绘制这些点,以检查这些点是否正确。 是的,但是当我在 tkinter 中绘制它时,带有负点的矩形丢失/没有被绘制。

带有负点的矩形并没有丢失,而是淹没在屏幕之外。 tkinter 画布从屏幕左上角的 0/0 开始,因此负数将绘制在窗口外。

改变:

drawingCanvas.create_rectangle(50, -200, 150, -100, fill="red")

到:

drawingCanvas.create_rectangle(50, 200, 150, 100, fill="red")

画布的左上角默认为 0,0。 由于您的对象被绘制在该坐标之上,因此它们是不可见的。

您可以在创建对象后调整scrollregion ,画布将进行调整,以便最左上角的对象可见。 您可以使用以下语句执行此操作,该语句应该您在画布上创建项目之后出现:

drawingCanvas.configure(scrollregion=drawingCanvas.bbox("all"))

drawingCanvas.bbox("all")返回画布上所有项目的边界框 然后将其传递到configure方法以更改画布的scrollregion属性。

这适用于这种特定情况,因为您绘制的所有内容都适合窗口。 如果您将项目绘制到右侧或下方很远的地方,它们将不可见。 这是一种调整画布可视部分的便捷方法,作为副作用,它会调整左上角显示的内容。

截屏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM