Tkinter продолжить выполнение после разрушения окна, используя несколько файлов - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь получить данные из окна Toplevel с Tkinter в полное окно Tk.

У меня есть меню Пуск Start.py, которое содержит класс Start.В меню «Пуск» есть кнопка, которая ведет к редактору карт в другом окне

self.config_4 = tk.Radiobutton(self.gamemode, text="Custom", value = 4, variable = val, command = self.set_custom)

, что приводит к

def set_custom(self):
    self.editor = Editor(self.menu)
    self.board = self.editor.getBoard()
    self.board = Board(BoardType.CLASSIC)

Редактор - это другой файл, который открывает окно Toplevel и содержит атрибут self.board, которую я хочу получить в Start.py

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

Так что, в принципе, единственное, что я хочу - это получить self.board из Editor в Start, а затем из Start в main.И то, и другое - одна и та же проблема уничтожения.

Спасибо!

#First.py
import tkinter as tk
from Test import Second


class First:
    def __init__(self):
        self.window = tk.Tk()
        self.test = tk.Button(self.window, command = self.popup, text="Test me").pack()
        self.stop = tk.Button(self.window, command = self.window.destroy, text="Quit").pack()

        self.window.mainloop()

    def popup(self):
        a = Second()
        self.one = a.get_one()

    def get_one(self):
        return self.one


if __name__ == '__main__':
     var = First()
     print(var.get_one())

#######################
#Test.py
import tkinter as tk

class Second:
    def __init__(self):
        self.popup = tk.Toplevel()
        myvar = tk.IntVar()
        self.one = tk.Radiobutton(self.popup, text="one", value = 1, variable = myvar, command = self.set_one)
        self.two = tk.Radiobutton(self.popup, text="two", value = 2, variable = myvar, command = self.set_two)
        self.done = tk.Button(self.popup, command = self.popup.destroy, text = "Bye")

        self.one.grid(row = 0, column = 0)
        self.two.grid(row = 0, column = 1)
        self.done.grid(row = 1, column = 0, columnspan = 2)

    def set_one(self):
        self.one = "Hi"

    def set_two(self):
        self.one = "Bye"

    def get_one(self):
        return self.one
...