Форум сайта python.su
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()
Офлайн
тут нужны 2 класса, в первом описываете основную программу, а во втором второе окно программы, затем из первого класса конфигурируете обьект второго и запускаете его когда надо в отдельном потоке
и не стоит забывать главное правило - никаких расчетов внутри основного потока в котором крутится гуй, в вашем случае будет 2 основных потока. все расчеты делаются в отдельных иначе гуй повиснет.
вышеописанные методы актуальны не только для ткинтера но и для остальных гуи либ
Офлайн
@cckyi_boxxxЧеловек зарегистрированный в12 году советует такие вещи? Создание потока для таких вещей это костыль который нужен крайне редко
запускаете его когда надо в отдельном потоке
@cckyi_boxxxТакой подход не только не актуален но и противопоказан во всех гуи библиотеках таких как Qt, wxpython, PyGTK. Надо просто четко себе представлять что события уходят в очередь и обрабатываются последовательно. Длительные расчеты могут задерживать реакцию на воздействия пользователя, а короткие (время выполнения которых не напрягает пользователя те менее 0.1 сек) делайте сколько вашей душе угодно.
вышеописанные методы актуальны не только для ткинтера но и для остальных гуи либ
Отредактировано doza_and (Июль 9, 2019 09:58:22)
Офлайн
doza_andто есть на сколько я Вас понял надо делать отдельно пай программу которая будет запускать 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()
Офлайн
doza_andСпасибо большое, почти так и сделал
Офлайн
doza_and а ты посмотри на другие посты @cckyi_boxxx, там тоже есть такое, чего ожидаешь от человека который программирование увидел позавчера
Офлайн