我有一个函数,根据窗口的屏幕大小绘制一个圆.目前,如果我把窗口缩小,整个圆就看不见了.有没有办法确定窗口是否已调整大小,以便我可以重新绘制圆以适应窗口?

下面是我画圆的代码:

def draw_circle():
    # Get circle radius
    screensize = s.screensize()
    if screensize[0] > screensize[1]:
        smaller = 1
    else:
        smaller = 0

    radius = screensize[smaller]

    # Draw circle
    t.pensize(15)
    t.pu()
    t.goto(0, -radius)
    t.pd()
    t.circle(radius)
    t.pu()

我试图添加一个if语句来判断我的主循环中的屏幕大小是否发生变化,但这也不起作用.

P、 我试着搜索谷歌和StackOverflow,但没有找到答案.

推荐答案

没有必要在循环中投票.使用turtle.getcanvas()获得底层Tkinter画布后,可以查找非 turtle Tkinter方法并使用它.例如,将Tkinter track window resize specifically?调整为turtle可以提供以下最小示例:

import turtle

def resize(event):
    print(event.width, event.height)

turtle.getcanvas().bind("<Configure>", resize)
turtle.exitonclick()

请注意,这不会改变屏幕大小,因此您可以相对于窗口绘制圆:

import turtle

def draw():
    r = min(turtle.window_width(), turtle.window_height()) / 2 - 30
    turtle.clear()
    turtle.penup()
    turtle.begin_fill()
    turtle.goto(0, -r)
    turtle.pendown()
    turtle.circle(r)
    turtle.end_fill()
    turtle.update()

def resize(event):
    draw()

turtle.tracer(0)
turtle.hideturtle()
turtle.getcanvas().bind("<Configure>", resize)
draw()
turtle.exitonclick()

绘制每样东西的相对尺寸往往相当繁琐,因此我建议在应用程序中尽可能避免这种情况.

Python相关问答推荐

是什么导致对Python脚本的jQuery Ajax调用引发500错误?

Python -Polars库中的滚动索引?

Python -根据另一个数据框中的列编辑和替换数据框中的列值

输出中带有南的亚麻神经网络

无法通过python-jira访问jira工作日志(log)中的 comments

根据二元组列表在pandas中创建新列

使用密钥字典重新配置嵌套字典密钥名

有没有一种ONE—LINER的方法给一个框架的每一行一个由整数和字符串组成的唯一id?

如何在图中标记平均点?

Python脚本使用蓝牙运行在Windows 11与raspberry pi4

如何保持服务器发送的事件连接活动?

调用decorator返回原始函数的输出

将scipy. sparse矩阵直接保存为常规txt文件

跳过嵌套JSON中的级别并转换为Pandas Rame

重置PD帧中的值

导入错误:无法导入名称';操作';

计算空值

polars:有效的方法来应用函数过滤列的字符串

如何将相同组的值添加到嵌套的Pandas Maprame的倒数第二个索引级别

如何在Airflow执行日期中保留日期并将时间转换为00:00