我的canvas我小的时候尺寸1680x960

my canvas I small when the size 1680x960

from tkinter import *

root = Tk()

coords=1017,474
frame = Canvas(root, width=1680, height=960)


def cords(event):
    print(event.x,event.y)



def click(event):
    frame.create_line(event.x,event.y,coords)

frame.bind('<B1-Motion>',click)
frame.bind('<Button-1>',cords)


photo=PhotoImage('images.png')
label=Label(frame,image=photo)
label.grid(row=5,)

frame.pack()

root.mainloop()

当我 运行 此代码时,我的 window 是最小尺寸。有人能告诉我为什么吗?当它确实可以正常工作时,我的绑定和图像的大小 none 是否存在。

原因是因为这一行:

label.grid(row=5,)

这会导致父级 window(在本例中为 canvas)缩小以适合标签。

有很多解决方案,但这完全取决于您期望的行为,这在您的问题中并不清楚。一般来说,您不应该在 canvas 的子控件上调用 gridpack。通常,您使用 canvas 的 create_window 方法将小部件放置在 canvas.

还有其他解决方案,但正确的解决方案取决于您打算如何使用 canvas 和标签。