【问题标题】:tkinter: Canvas with relative parameterstkinter:具有相关参数的画布
【发布时间】:2020-11-16 20:14:04
【问题描述】:

我创建了一个画布小部件并绘制了一条从左上角到右下角的线。现在,如果我调整窗口大小,则该线将保持原位并且不会从左上角延伸到右下角。如何在画布中绘制东西并在调整窗口大小时使其伸展?基本上给画布中的任何东西一个相对大小和位置。

from tkinter import *

root = Tk()
root.geometry("400x400")

c = Canvas(root)
c.pack(fill=BOTH, expand=1)

c.create_line(0, 0, 400, 400)

root.mainloop()

【问题讨论】:

    标签: python tkinter canvas


    【解决方案1】:

    您必须检测正在调整大小的画布并自己调整坐标。绑定到<Configure> 是一种在小部件改变大小时调用函数的便捷方式。

    这是一个简单的示例,它利用了您只有一个项目这一事实。如果有几十个项目,有些有相对坐标,有些没有,你就必须做一些更精细的事情。

    import tkinter as tk
    
    def redraw(event):
        c.coords(item, 0, 0, event.width, event.height)
    
    root = tk.Tk()
    root.geometry("400x400")
    
    c = tk.Canvas(root)
    c.pack(fill="both", expand=True)
    c.bind("<Configure>", redraw)
    item = c.create_line(0,0,400,400)
    
    root.mainloop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      相关资源
      最近更新 更多