2017-02-16 27 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, ни одно из моих привязок и изображений не будет, если.мое полотно I маленькое, когда размер 1680x960

+0

Вы ожидаете, что этикетка будет внутри или снаружи холста? Ожидаете ли вы, что холст будет расти и уменьшаться при изменении размера окна? Вы ожидаете, что сможете прокручивать холст? –

ответ

0

Причина в том, что в этой строке:

label.grid(row=5,) 

Это вызывает родительское окно (в данном случае, холст), чтобы сжаться, чтобы соответствовать этикетке.

Существует много решений, но все зависит от того, какое поведение вы ожидаете, что неясно в вашем вопросе. Вообще говоря, вы не должны называть grid или pack виджет, который является дочерним элементом холста. Как правило, вы используете метод canvas для создания виджета в холсте.

Существуют и другие решения, но правильное решение зависит от того, как вы планируете использовать холст и этикетку.

+0

Как вы используете метод create_window – Nerfbeard

 Смежные вопросы

  • Нет связанных вопросов^_^