Приветствую!
Подскажите, как изменить метку с другого класса? Как к ней обратиться для изменения ее свойств?
Код примерно такой (обрезан от всего лишнего):
Почему нет реакции на строку:
И второй вопрос прямо связан с первым - как получить значение переменной без вызова функции?
В данном случае - получить список "а", но не писать что-то такое:
У меня просто в зависимости от переданного параметра генерируется разный список, и получается, что три раза вызывается эта функция с диалоговым окном открытия файла. А так бы - я раз открыл файл, и потом обрабатывал уже саму переменную.
Подскажите, как изменить метку с другого класса? Как к ней обратиться для изменения ее свойств?
Код примерно такой (обрезан от всего лишнего):
Код:
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()