Найти - Пользователи
Полная версия: Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?
Начало » GUI » Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?
1
dima_ikar
 def log_pass():
        print(enter_login.get(), enter_password.get())
        if str(enter_login.get()) in str(log_in):
            if str(enter_password.get()) == str(pass_wd):
                next_w_i = threading.Thread(target=next_w())
                clozet_i = threading.Thread(target=clozet())
                next_w_i.start()
                clozet_i.start()
                next_w_i.join()
                clozet_i.join()
            else:
                messagebox.showerror("ALARM")
                root.destroy()
        else:
            messagebox.showerror("no login")
            root.destroy()
    def next_w():
        messagebox.showinfo("hello")
        os.system(python ppp.py)
    def clozet():
        root.destroy()

первая должна запустить ppp.py и вторая закрыть окно
@cckyi_boxxx
тут нужны 2 класса, в первом описываете основную программу, а во втором второе окно программы, затем из первого класса конфигурируете обьект второго и запускаете его когда надо в отдельном потоке

и не стоит забывать главное правило - никаких расчетов внутри основного потока в котором крутится гуй, в вашем случае будет 2 основных потока. все расчеты делаются в отдельных иначе гуй повиснет.

вышеописанные методы актуальны не только для ткинтера но и для остальных гуи либ
doza_and
@cckyi_boxxx
запускаете его когда надо в отдельном потоке
Человек зарегистрированный в12 году советует такие вещи? Создание потока для таких вещей это костыль который нужен крайне редко

первая же ссылка в гугле:

https://stackoverflow.com/questions/16115378/tkinter-example-code-for-multiple-windows-why-wont-buttons-load-correctly
@cckyi_boxxx
вышеописанные методы актуальны не только для ткинтера но и для остальных гуи либ
Такой подход не только не актуален но и противопоказан во всех гуи библиотеках таких как Qt, wxpython, PyGTK. Надо просто четко себе представлять что события уходят в очередь и обрабатываются последовательно. Длительные расчеты могут задерживать реакцию на воздействия пользователя, а короткие (время выполнения которых не напрягает пользователя те менее 0.1 сек) делайте сколько вашей душе угодно.
dima_ikar
doza_and
то есть на сколько я Вас понял надо делать отдельно пай программу которая будет запускать 2 процесса
doza_and
dima_ikar
Вас понял надо делать отдельно пай программу которая будет запускать 2 процесса
Неправильно поняли. Конечно нет. Я вам пример скинул где два окошка создается. все это в рамках одного цикла обработки сообщений.

 import tkinter as tk
class Demo1:
    def __init__(self, master):
        self.master = master
        self.frame = tk.Frame(self.master)
        self.button1 = tk.Button(self.frame, text = 'New Window', width = 25, command = self.new_window)
        self.button1.pack()
        self.frame.pack()
    def new_window(self):
        self.newWindow = tk.Toplevel(self.master)
        self.app = Demo2(self.newWindow)
class Demo2:
    def __init__(self, master):
        self.master = master
        self.frame = tk.Frame(self.master)
        self.quitButton = tk.Button(self.frame, text = 'Quit', width = 25, command = self.close_windows)
        self.quitButton.pack()
        self.frame.pack()
    def close_windows(self):
        self.master.destroy()
def main(): 
    root = tk.Tk()
    app = Demo1(root)
    root.mainloop()
if __name__ == '__main__':
    main()

dima_ikar
doza_and
Спасибо большое, почти так и сделал
JOHN_16
doza_and а ты посмотри на другие посты @cckyi_boxxx, там тоже есть такое, чего ожидаешь от человека который программирование увидел позавчера
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB