Уведомления

Группа в Telegram: присоединиться
  • Начало
  • » GUI
  • » Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)? [RSS Feed]

#1 Июль 8, 2019 22:48:25

dima_ikar
Зарегистрирован: 2019-05-03
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?

 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 и вторая закрыть окно

Офлайн

#2 Июль 9, 2019 03:43:43

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 118
Репутация: +  6  -
Профиль   Отправить e-mail  

Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?

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

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

вышеописанные методы актуальны не только для ткинтера но и для остальных гуи либ



Офлайн

#3 Июль 9, 2019 09:53:05

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 3358
Репутация: +  183  -
Профиль   Отправить e-mail  

Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?

@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 сек) делайте сколько вашей душе угодно.



Отредактировано doza_and (Июль 9, 2019 09:58:22)

Офлайн

#4 Июль 9, 2019 11:49:05

dima_ikar
Зарегистрирован: 2019-05-03
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?

doza_and
то есть на сколько я Вас понял надо делать отдельно пай программу которая будет запускать 2 процесса

Офлайн

#5 Июль 9, 2019 22:33:44

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 3358
Репутация: +  183  -
Профиль   Отправить e-mail  

Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?

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()



Офлайн

#6 Июль 10, 2019 10:02:29

dima_ikar
Зарегистрирован: 2019-05-03
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?

doza_and
Спасибо большое, почти так и сделал

Офлайн

#7 Июль 10, 2019 10:10:50

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3244
Репутация: +  219  -
Профиль   Отправить e-mail  

Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?

doza_and а ты посмотри на другие посты @cckyi_boxxx, там тоже есть такое, чего ожидаешь от человека который программирование увидел позавчера



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

  • Начало
  • » GUI
  • » Как в tkinter создать многооконное приложение (одновременно запустить 2 программы)?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version