Есть ли способ сделать так, чтобы ярлык отображался в каждом окне tkinter без необходимости снова и снова выписывать каждую строку кода

#python #python-3.x #tkinter

Вопрос:

Мне интересно, есть ли способ, в tkinter или с помощью любого другого модуля python, сделать так, чтобы вы сохраняли метку или любой другой элемент в каждом окне, просто используя что-то вроде функции, которая создает метку в окне? Я пробовал это:

 #Modules
import tkinter as tkin

#The initializer window
class Test:
  def __init__(self):
    #Initializes the main window
    self.start = tkin.Tk()
    self.start.title('Test')
    self.label_thing()

  #Makes a label
  def label_thing(self):
    self.label1 = tkin.Label(text='Not Button')
    self.label1.pack()
 

Я не знаю, допустил ли я какие-либо ошибки или это не то, что вы можете сделать, но я также хотел бы воздержаться от локализации метки в этом окне и необходимости переделывать код для каждого окна.

Комментарии:

1. Да, вы можете использовать параметр и передать туда имя окна

2. Зачем вам нужна эта метка в каждом окне? С какой целью?

Ответ №1:

Предположим, у вас есть кнопка, которая создает окна, вы передадите это окно в качестве аргумента функции, которая создает метку, так что:

 import tkinter as tk # Fixed weird import naming

class Test:
    def __init__(self):
        self.start = tk.Tk()
        self.start.title('Test')

        self.label_thing(self.start) # Label on the main window
        
        tk.Button(self.start,text='Click me',command=self.create_win).pack()
        
        self.start.mainloop()

    def label_thing(self, master):
        self.label1 = tk.Label(master, text='Not Button')
        self.label1.pack()

    def create_win(self):
        new = tk.Toplevel()
        self.label_thing(new) # Label on the new window
    
if __name__ == '__main__':
    Test()
 

Как вы можете видеть, пока вы нажимаете кнопку, создаются новые окна, и на всех этих окнах есть метка, динамически.

Комментарии:

1. Спасибо!!! Я на самом деле не знал, что ты можешь определить что-то подобное! Я не могу проголосовать за то, чтобы это было полезно еще из-за проблемы с репутацией, но, когда я смогу, я сделаю это!