【问题标题】:How to show only a portion of the tkinter canvas by cropping the tkinter window?如何通过裁剪 tkinter 窗口仅显示一部分 tkinter 画布?
【发布时间】:2023-01-08 07:24:56
【问题描述】:

我希望能够放大我的 tkinter 画布。我的 tkinter 画布是 500x500px,我只希望我的窗口显示该画布的中心 200x200px 部分。我该怎么做呢?我知道我可以使用 root.geometry("200x200+0+0") 将窗口大小指定为 200x200px,但这会导致我的窗口显示画布的左上角,而不是中心。在我做任何事情之前,我的整个画布看起来像这样:

最后,我希望我的窗口看起来像这样,画布在窗口内居中:

这是我的代码:

import tkinter

root = tkinter.Tk()
root.title("")
root.geometry("200x200+0+0")

canvas = tkinter.Canvas(master = root, width = 500, height = 500)

canvas.create_oval(200, 200, 300, 300, outline = "black", fill = "blue")
canvas.pack()

返回:

如您所见,画布未居中,此时窗口显示在左上角。有没有人有什么建议?

【问题讨论】:

  • 你自己尝试过什么来解决这个问题?
  • 我尝试使用 canvas.create_window() 和 tkinter 框架,但我无法让它们工作。

标签: python tkinter tkinter-canvas tkinter-layout


【解决方案1】:

好的,感谢this stackoverflow post,我发现在创建名为scrollregion 的 tkinter 画布时有一个选项。对于任何想知道的人来说,参数的格式是"x0 y0 x1 y1",在哪里(x0, y0)是我要显示的画布区域的左上角(x1, y1)是同一区域的右下角。我的代码应该固定为:

canvas = tkinter.Canvas(master = root, width = 500, height = 500, scrollregion = "150 150 350 350")

请注意这些坐标不考虑滚动条......我仍在努力解决这个问题。也非常感谢this stackoverflow post,特别是下面的话:

我看不出将 y 滚动条放在底部或将画布视图放在底部之间有什么区别,因为这两者是链接的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多