Как изменить метку с другого класса

asmadeus

Новичок
Пользователь
Июл 27, 2020
17
1
3
Приветствую!
Подскажите, как изменить метку с другого класса? Как к ней обратиться для изменения ее свойств?
Код примерно такой (обрезан от всего лишнего):
Код:
from tkinter import Tk, Frame, BOTH
from tkinter.ttk import Button, Label, Style
from tkinter import messagebox
from tkinter.filedialog import askopenfilename

class Rem():
    def open_file(self):
        self.a = []
        self.filename = askopenfilename(initialdir = "D:/Documents",title = "Выберите файл для работы",filetypes = (("Import files","Import.txt"),("All files","*.*")))
        with open(self.filename, "r", encoding='utf-8') as f:
            for line in f:
                if not line.isspace():
                    self.a.append(line.replace('\n', ''))
        f.close()
        Gui.lbl1.config(text=str(self.filename).replace('/', '\\'))
        return a

class Gui(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.parent.title("Coiner")
        self.pack(fill=BOTH, expand=1)
        self.centerWindow()
        self.initUI()


    def initUI(self):
        btn1 = Button(self.parent, text='', command=Rem().open_file)
        btn1.place(x=5, y=5, height=32, width=32)
        self.lbl1 = Label(self.parent, text="Файл не выбран", font=("Arial", 10))
        self.lbl1.place(relx=.5, rely=1, anchor="s", height=20, width=800)

    def onExit(self):
        self.quit()


    def centerWindow(self):
        w = 800
        h = 600
        sw = self.parent.winfo_screenwidth()
        sh = self.parent.winfo_screenheight()
        x = (sw - w) / 2
        y = (sh - h) / 2
        self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y))
        self.parent.resizable(False, False)


    def main():
        root = Tk()
        Gui(root)
        root.mainloop()


def main():
    Gui.main()

if __name__ == '__main__':
    main()
Почему нет реакции на строку:
Код:
Gui.lbl1.config(text=str(self.filename).replace('/', '\\'))
И второй вопрос прямо связан с первым - как получить значение переменной без вызова функции?
В данном случае - получить список "а", но не писать что-то такое:
Код:
a = self.open_file()
У меня просто в зависимости от переданного параметра генерируется разный список, и получается, что три раза вызывается эта функция с диалоговым окном открытия файла. А так бы - я раз открыл файл, и потом обрабатывал уже саму переменную.
 

Форум IT Специалистов