我的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 的子控件上调用 grid
或 pack
。通常,您使用 canvas 的 create_window
方法将小部件放置在 canvas.
中
还有其他解决方案,但正确的解决方案取决于您打算如何使用 canvas 和标签。
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 的子控件上调用 grid
或 pack
。通常,您使用 canvas 的 create_window
方法将小部件放置在 canvas.
还有其他解决方案,但正确的解决方案取决于您打算如何使用 canvas 和标签。