2017-03-02 3 views
0

Ich versuche derzeit, einen grundlegenden Smartmirror für meine Codierung II-Klasse in der Schule mit Python zu programmieren. Eine Sache, die ich versuche, ist, einen Willkommenstext zu erstellen, der basierend auf dem Knopf, den du drückst, aktualisiert wird. Ich lese die Zeichenfolge für den Canvas-Text aus einem .txt Dokument, das sich je nach dem ausgewählten Benutzer ändert. Gibt es eine Möglichkeit, dies automatisch zu aktualisieren, wenn ich den Text des Dokuments ändere?Wie erstellt man in Python ein ständig aktualisierendes Canvas?

Der Code, den ich die Nachricht anzuzeigen bin mit ist:

text2 = Canvas(tk, width=500, height=100) 
welcometext = text2.create_text(200, 50, text=string, font=('Helvetica', 20, 'italic')) 
text2.pack(side=TOP, anchor=Center) 

Antwort

0

Der einfachste Weg, dies zu tun, ist eine Schleife haben. Und in jedem Zyklus der Schleife sollten Sie nach Benutzereingaben suchen und neu zeichnen. Stellen Sie sicher, dass Sie alles in Funktionen aufteilen, damit Ihre Schleife sauber ist. So etwas wie diese -

canvas = Canvas(tk, width=500, height=500) 
text = '' 

while(True) { 
    getUserInput(text) 
    draw(canvas, text) 
} 

Sie können Python in input Funktion eingebaut verwenden, um die Benutzereingabe in Ihrer getUserInput Funktion zu erhalten.

Nebenbei bemerkt, das ist ein naives Konzept, da die Schleife jedes Mal vor der Neuzeichnung auf Benutzereingaben wartet. Der richtige Weg, dies zu tun wäre, threading zu verwenden. Sie könnten einen Thread haben, um Benutzereingaben zu erfassen, während Ihre Hauptschleife andere Dinge erledigt. Dies kann jedoch aufgrund von Datensynchronisierungsproblemen sehr schnell kompliziert werden. Ich würde jetzt einfach bei der naiven Vorgehensweise bleiben. Die Variable text2 ist ebenfalls irreführend. Versuchen Sie immer, Ihre Variablen genau so zu benennen, wie sie sind. In diesem Fall ist es ein Canvas Objekt, also nennen Sie es canvas.

Verwandte Themen