2017-02-16 4 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

関連する問題