Импорт класса в несколько файлов - PullRequest
0 голосов
/ 06 октября 2019

Я не смог найти решение в Google об этом ... Так что я программирую на python графический интерфейс, в котором у вас есть два окна: одно главное окно и одно временное окно, которое позволяет вносить некоторые изменения. Главное окно находится в main.py, а другое в tmp.py. из временного окна я хочу кнопку, которая позволяет мне вернуться в главное окно ... это означает, что из tmp.py мне нужно вызвать окно в main.py. Так что в main.py у меня есть: import tmp

Я не думаю, что это правильно, если положить tmp.py: import main, потому что он переопределит тот же класс ... так что, по вашему мнению, должно быть правильнымспособ процедуры ... Надеюсь, я достаточно ясно дал понять, что это не так просто описать ... возможно, поэтому я не смог найти решение в Google.

Так что по сути код должен быть: в main.py

import tkinter as tk
import tmp

class MainStr(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self._frame = None
        self.switch_frame(StartPage)

    def switch_frame(self,frame_class):
        new_frame = frame_class(self)
        if self._frame is not None:
            self._frame.destroy()
        self._frame = new_frame
        self._frame.pack()

class StartPage(tk.Frame):
    def __init__(self,master):
        tk.Frame.__init__(self,master)
        chbtn = tk.Button(self,text='Tmp page',command=lambda:master.switch_frame(tmp.page))
        chbtn.grid(column=0,row=0)


a = MainStr()
a.mainloop()

в tmp.py

import tkinter as tk
import main

class page(tk.Frame):
    def __init__(self,master):
        tk.Frame.__init__(self,master)
        chbtn = tk.Button(self,text='Home page',command=lambda:master.switch_frame(main.StartPage))
        chbtn.grid(column=0,row=0)

Большое спасибо

1 Ответ

2 голосов
/ 06 октября 2019

Я бы сделал новый файл с именем startpage.py и поместил бы в него ваш класс StartPage. Затем вы можете импортировать startpage.py из main.py и tmp.py. После этого вы можете удалить оператор import main из tmp.py.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...