кнопка открыть дубликат окна главной страницы в новом окне, используя python и tkinter в pycharm - PullRequest
1 голос
/ 04 апреля 2019

Как сделать так, чтобы кнопка открывала двойное окно главной страницы в новом окне?

Каким будет код Python, чтобы сделать это с Tkinter?

Для пояснения, в notepad ++, когда вы щелкаете правой кнопкой мыши на вкладке, в которой вы находитесь, она показывает вам все меню.

Затем, есть раскрывающееся меню с опцией, которая говорит, открыть в новом экземпляре или перейти к новому экземпляру.

Затем откроется выбранная вкладка в новой вкладке / окне.

Я еще ничего не пробовал, но я посмотрел на вопрос, как сделать этот тип вещи, и не было никаких результатов относительно того, что именно я хотел сделать.

Можете ли выпопытаться показать мне пример того, как мне нужно сделать то, что мне нужно сделать?

Код:

Найдено здесь

1 Ответ

1 голос
/ 04 апреля 2019

Самое простое решение - сделать ваше окно подклассом Toplevel. Затем каждый раз, когда вам нужно новое окно, создайте новый экземпляр класса.

Затем вы можете оставить корневое окно пустым и скрыть его, чтобы видеть только ваши пользовательские окна. Важно убедиться, что вы уничтожаете корневое окно после того, как пользователь удалил последнее окно приложения, иначе вы получите невидимое окно, которое будет трудно убить.

Вот немного надуманного примера:

import tkinter as tk

class AppWindow(tk.Toplevel):
    def __init__(self, root):
        tk.Toplevel.__init__(self, root)

        self.root = root
        menubar = tk.Menu(self)
        windowMenu = tk.Menu(menubar)
        windowMenu.add_command(label="New Window", command=self.new_window)
        windowMenu.add_command(label="Quit", command=root.destroy)

        menubar.add_cascade(label="Window", menu=windowMenu)
        self.configure(menu=menubar)

        self.text = tk.Text(self)
        self.vsb = tk.Scrollbar(self, orient="vertical", command=self.text.yview)
        self.text.configure(yscrollcommand=self.vsb.set)

        self.vsb.pack(side="right", fill="y")
        self.text.pack(side="left", fill="both", expand=True)

        # call a function to destroy the root window when the last
        # instance of AppWindow is destroyed
        self.wm_protocol("WM_DELETE_WINDOW", self.exit_on_last_window)

    def new_window(self):
        AppWindow(self.root)

    def exit_on_last_window(self):
        """Destroy the root window when no other windows exist"""
        self.destroy()
        if not any([window.winfo_exists() for window in self.root.winfo_children()]):
            self.root.destroy()

    def quit(self):
        self.root.destroy()

# create the root, then hide it. The app will create its
# own windows as Toplevels
root = tk.Tk()
root.withdraw()

# create the first window, then start the event loop
AppWindow(root)
tk.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...