Как редактировать виджеты в другом классе Tkinter? - PullRequest
0 голосов
/ 30 марта 2019

Мне нужно знать, как я могу обновить текст метки, не создавая новое окно.У меня есть следующий код, но когда я пытаюсь изменить метку output_box на выходную переменную, определенную в import_csv(), я получаю ошибку 'function' object has no attribute 'output_box'.

Извините за избыточный код, но у меня действительно естьПонятия не имею, что является причиной проблемы.

import Tkinter as tk
import sqlite3

class main_window:

    def __init__(self,output):

        global Initialising
        if Initialising == True:
            Initialising = False
            root = tk.Tk()
            self.startup(root)
            root.mainloop()
        else:
            self.Update(output)



    def startup(self,master):

        self.master = master
        self.master.title("SQL Managment GUI")
        self.master.geometry("665x500")
        self.master.configure(background = "#42b9f4")

        self.output_frame = tk.Frame(self.master , background = "#42b9f4", padx= 5, pady=5)
        self.output_label = tk.Label(self.output_frame, background = "#42b9f4", fg='#000000', text = "OUTPUT", width = 50)
        self.output_label.grid(column = 0, row=0)
        self.output_box = tk.Label(self.output_frame, background = "#ffffff", fg='#000000', width = 50, height = 30,wraplength= 45 ,text = "")
        self.output_box.grid(column = 0, row=1)
        self.output_frame.grid(column = 0 , row = 0)

        self.side_frame = tk.Frame(self.master , background = "#42b9f4",padx = 10, pady = 200)
        self.info_label = tk.Label(self.side_frame, background = "#42b9f4", fg='#000000', text = "IMPORTANT INFO")
        self.info_label.grid(column = 0 , row = 0)
        self.import_button = tk.Button(self.side_frame, relief = "raised", background = "#42b9f4", fg='#000000', text = "IMPORT", width = 15 , command = self.open_import)
        self.import_button.grid(sticky= "n", column = 0, row=1)
        self.update_button = tk.Button(self.side_frame, relief = "raised", background = "#42b9f4", fg='#000000', text = "UPDATE", width = 15 , command = self.open_update)
        self.update_button.grid(sticky= "n", column = 1, row=1)
        self.create_button = tk.Button(self.side_frame, relief = "raised", background = "#42b9f4", fg='#000000', text = "NEW RECORD", width = 15 , command = self.open_New_record)
        self.create_button.grid(sticky= "n", column = 0, row=2)
        self.delete_button = tk.Button(self.side_frame, relief = "raised", background = "#42b9f4", fg='#000000', text = "DELETE", width = 15 , command = self.open_delete)
        self.delete_button.grid(sticky= "n", column = 1, row=2)
        self.query_button = tk.Button(self.side_frame, relief = "raised", background = "#42b9f4", fg='#000000', text = "QUERY", width = 31)
        self.query_button.grid(sticky= "n", column = 0, row=3 ,columnspan=2)
        self.side_frame.grid(column = 1 , row = 0)



    def Update(self,output):
        self.output = output
        self.startup.output_box.config(text = self.output)


class Import:

    def __init__(self,master):
        self.master = master
        self.master.title("IMPORT CSV")
        self.master.geometry("285x200")
        self.master.configure(background = "#42b9f4")
        self.import_frame = tk.Frame(self.master , background = "#42b9f4",pady=5)
        self.import_name = tk.Label(self.import_frame, text = "FILE TO BE IMPORTED (incl file extension)", background = "#42b9f4", fg='#000000', width = 30)
        self.import_name.grid(column = 0, row=0)
        self.import_name_entry = tk.Entry(self.import_frame, text = "", background = "#ffffff", fg='#000000', width = 40)
        self.import_name_entry.grid(column = 0, row=1)
        self.db_name = tk.Label(self.import_frame, text = "DATABASE NAME", background = "#42b9f4", fg='#000000', width = 30)
        self.db_name.grid(column = 0, row=3)
        self.db_name_entry = tk.Entry(self.import_frame, text = "", background = "#ffffff", fg='#000000', width = 40)
        self.db_name_entry.grid(column = 0, row=4)
        self.table_name = tk.Label(self.import_frame, text = "TABLE NAME", background = "#42b9f4", fg='#000000', width = 40)
        self.table_name.grid(column = 0, row=5)
        self.table_name_entry = tk.Entry(self.import_frame, text = "", background = "#ffffff", fg='#000000', width = 40)
        self.table_name_entry.grid(column = 0, row=6)
        self.submit_button = tk.Button(self.import_frame, relief = "raised", background = "#42b9f4", fg='#000000', text = "SUBMIT", width = 15 , command = self.import_csv)
        self.submit_button.grid(sticky= "n", column = 0, row=7)
        self.import_frame.grid(column =0 , row =0)



    def import_csv(self):

        file_path = self.import_name_entry.get()
        mayfieldFile = open(str(file_path),"r")


        output = "---BEGINING IMPORT---\n"
        app = main_window(output)


def main():
    global Initialising
    Initialising = True
    output = ""
    app = main_window(output)

if __name__ == '__main__':
    main()
...