2017-02-16 1 views
0
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() 

이 코드를 실행하면 내 창이 최소 크기입니다. 누군가 왜 저에게 말할 수 있습니까? 그리고 ok 크기로 작동 할 때 내 바인딩과 이미지는 존재하지 않습니다.나의 캔버스 나는 작을 때 크기가 1680x960

+0

캔버스 내부 또는 외부에 레이블이 있어야합니까? 창 크기를 조정할 때 캔버스가 커지고 축소되는 것을 기대합니까? 캔버스를 스크롤 할 수있을 것으로 기대합니까? –

답변

0

이유 때문에이 라인이다 :

label.grid(row=5,) 

이 (이 경우, 캔버스) 라벨에 맞게 축소하는 부모 창을 발생합니다.

여러 가지 해결책이 있지만 모두 예상되는 동작에 따라 달라집니다. 문제는 분명하지 않습니다. 일반적으로 캔버스의 자식 인 위젯에서는 grid 또는 pack으로 전화하지 않아야합니다. 일반적으로 캔버스의 create_window 메서드를 사용하여 캔버스 내에 위젯을 배치합니다.

다른 해결책이 있지만 적절한 해결책은 캔버스와 레이블을 어떻게 사용할 계획인지에 따라 다릅니다.

+0

create_window 메서드는 어떻게 사용합니까? – Nerfbeard

관련 문제