Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
249 views
in Technique[技术] by (71.8m points)

python - How to update label on tkinter

I would like to update a label once I press one of the buttons. Here is my code - I added a label (caled label1), now I have two issues:

  1. It presents some gibberish
  2. How do I update the label with text right when the user is pressing the Browse button?
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()
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Use self.label['text'] to change text

(Minimal?) Working example:

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()

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...