2016-11-07 1 views
-1

Ich möchte ein Etikett aktualisieren, sobald ich einen der Knöpfe drücke. Hier ist mein Code - ich ein Etikett (caled label1) hinzugefügt, jetzt habe ich zwei Fragen:Wie aktualisiere ich das Etikett auf tkinter

  1. Es stellt einige Kauderwelsch
  2. Wie ich das Etikett mit Text rechts aktualisiere wenn der Benutzer das Durchsuchen drängt Taste?
from tkinter import * 
import threading 

class Window(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.master = master 
     self.init_window() 

    def init_window(self): 
     self.var = IntVar() 
     self.master.title("GUI") 
     self.pack(fill=BOTH, expand=1) 
     quitButton = Button(self, text="Exit", command=self.client_exit) 
     startButton = Button(self, text="Browse", command=self.start_Button) 
     label1 = Label(self, text=self.lable_1) 

     quitButton.grid(row=0, column=0) 
     startButton.grid(row=0, column=2) 
     label1.grid(row=1, column=0) 

    def client_exit(self): 
     exit() 

    def lable_1(self): 
     print('starting') 

    def start_Button(self): 
     def f(): 
      print('Program is starting') 
     t = threading.Thread(target=f) 
     t.start() 

root = Tk() 
root.geometry("250x50") 
app = Window(root) 
root.title("My Program") 
root.mainloop() 
+0

Verwendung 'self.label1' Zugang zu erhalten zu' Label'. BTW: 'self.label_1' ist eine Funktion und es hat keinen Sinn, sie als Text zu verwenden -' text = self.label_1'. BTW: 'print' sendet nur Text auf dem Bildschirm - er weist der Variablen keinen Wert zu - benutze' return' anstelle von 'print' in der Funktion' label_1' und dann kannst du 'text = self.lable_1()' - mit machen '()' am Ende. – furas

+1

BTW: in tkinter können Sie 'root.after (milisecond, function_name)' verwenden, um die Funktion periodisch auszuführen und vielleicht brauchen Sie keine Threads. – furas

+0

Haben Sie diese Website nach einer Antwort durchsucht, bevor Sie diese Frage gestellt haben? Es gibt viele Beispiele für Programme, die ein Label aktualisieren, und viele, die dies wiederholt tun, ohne Threads zu verwenden. –

Antwort

0

Verwenden self.label['text'] Text ändern

(Minimal?) Arbeitsbeispiel:

import tkinter as tk 

class Window(tk.Frame): 

    def __init__(self, master=None): 
     tk.Frame.__init__(self, master) 

     # tk.Frame.__init__ creates self.master so you don't have to 
     #self.master = master 

     self.init_window() 

    def init_window(self): 
     self.pack(fill=tk.BOTH, expand=1) 

     quit_button = tk.Button(self, text="Exit", command=root.destroy) 
     start_button = tk.Button(self, text="Browse", command=self.on_click) 

     self.label = tk.Label(self, text="Hello") 

     quit_button.grid(row=0, column=0) 
     start_button.grid(row=0, column=1) 

     self.label.grid(row=1, column=0, columnspan=2) 

    def on_click(self): 
     self.label['text'] = "Starting..." 

root = tk.Tk() 
app = Window(root) 
root.mainloop() 
+0

danke Jungs, das hilft mir sehr. Ich habe viele Male gesucht, bevor ich gefragt habe, ich bin gerade neu im Codieren und manchmal weiß ich einfach nicht, wie man Dinge in der richtigen Reihenfolge positioniert, auch dieses "Selbst" ist mir immer noch zu komplex. In den Beispielen, die du mir gegeben hast, macht es wirklich Sinn und hilft viel beim Verstehen. Danke noch einmal! –

Verwandte Themen