2017-02-16 3 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() 

wenn ich diesen Code ausführen mein Fenster ist die Mindestgröße. Könnte mir jemand sagen warum? und wenn es mit ok funktioniert, sind keine meiner Bindungen und Bilder vorhanden.meine Leinwand ich klein wenn die Größe 1680x960

+0

Erwarten Sie, dass sich das Etikett innerhalb oder außerhalb der Arbeitsfläche befindet? Erwarten Sie, dass die Leinwand vergrößert und verkleinert wird, wenn die Größe des Fensters geändert wird? Erwarten Sie, dass Sie die Leinwand scrollen können? –

Antwort

0

Der Grund ist, weil diese Linie:

label.grid(row=5,) 

Das das übergeordnete Fenster (in diesem Fall die Leinwand) führen zu schrumpfen, das Etikett zu passen.

Es gibt viele Lösungen, aber alles hängt davon ab, welches Verhalten Sie erwarten, was in Ihrer Frage nicht klar ist. Im Allgemeinen sollten Sie grid oder pack nicht auf einem Widget aufrufen, das einem Canvas untergeordnet ist. In der Regel verwenden Sie die Methode create_window der Zeichenfläche, um ein Widget in der Zeichenfläche zu platzieren.

Es gibt andere Lösungen, aber die richtige Lösung hängt davon ab, wie Sie die Zeichenfläche und das Etikett genau verwenden möchten.

+0

Wie verwenden Sie die create_window-Methode – Nerfbeard

Verwandte Themen