2016-11-07 4 views
-1

Я хотел бы обновить ярлык, как только я нажму одну из кнопок. Вот мой код - я добавил метку (caled label1), теперь у меня есть два вопроса:Как обновить ярлык на tkinter

  1. Он представляет некоторые тарабарщина
  2. Как обновить этикетку с текстом справа, когда пользователь нажимает Обзор кнопка?
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

использование 'self.label1', чтобы получить доступ к' label'. BTW: 'self.label_1' является функцией, и нет смысла использовать его как текст -' text = self.label_1'. BTW: 'print' отправляет только текст на экране - он не присваивает значение переменной - используйте' return' вместо 'print' в функции' label_1', а затем вы можете сделать 'text = self.lable_1()' - с '()' в конце. – furas

+1

BTW: в tkinter вы можете использовать 'root.after (milisecond, function_name)' для запуска функции периодически и, возможно, вам не понадобятся нити. – furas

+0

Вы искали этот сайт для ответа, прежде чем задавать этот вопрос? Существует множество примеров программ, которые обновляют метку, и многие из них делают это многократно без использования потоков. –

ответ

0

Использование self.label['text'] для изменения текста

(Minimal?) Рабочий пример:

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

спасибо, ребята, мне это очень помогает. я много раз искал, прежде чем спрашивать, я просто новый для кодирования, и иногда я просто не знаю, как позиционировать вещи в правильном порядке, также эта «я» вещь все еще слишком сложна для меня. в примерах, которые вы мне дали, это действительно имеет смысл и помогает в понимании. еще раз спасибо! –

Смежные вопросы