Форум сайта python.su
простейший пример
import PySimpleGUI as sg layout = [ [sg.Cancel(),sg.Button('test')] ] window = sg.Window('Test.py', layout) while True: event, values = window.read() if event in (None, 'stop'): break if event == 'test' : for i in range(300): print(i)
Офлайн
проверил в tkinter та же беда
можно как то сделать интерфейс который будет запускать скрипт и при этом не зависать намертво до его завершения ?
Офлайн
vrДля этого делаются потоки. В одном потоке у тебя окно, в другом потоке запускается выполнение чего-нибудь.
в таком случае как правильно?
vrПридётся учиться делать потоки. Потоки - это threads.
в крайнем случае стоит ли мне попробовать другие GUI или результат будет тем же?
Офлайн
к такой мысли я сразу и пришел, но после нескольких попыток понял что либо я где то косячу и создаю поток внутри потока либо это так не работает
Офлайн
угу сейчас с утра зааметил что я так и делал. ну что то до меня никак не дойдет озарение как их розделить
import PySimpleGUI as sg #vizyal GUI import threading import time class testth(threading.Thread): def __init__(self, name, counter): threading.Thread.__init__(self) self.threadID = counter self.name = name self.counter = counter def run(self): for i in range(150): print(i) class win(threading.Thread): def __init__(self, name, counter): threading.Thread.__init__(self) self.threadID = counter self.name = name self.counter = counter def run(self): print ('Window open') layout = [ [sg.Text('var'), sg.InputText()], [sg.Cancel(), sg.Button('knopka1'), sg.Button('test'), sg.Button('Start test th')] ] window = sg.Window('Program', layout) global eve global values while True : event, values = window.read() if event in (None, 'Stop') : break if event == 'knopka1' : print ('najal') eve = 'Start skript' test() if event == 'test' : eve = 'stop' print (eve) test() if event == 'Start test th' : print ('Start test th') eve = 'Start test th' test() global eve eve = 'Start th' def test() : global eve while True: print ('...') if eve == 'Start th' : thread0 = win('Thread0', 0) thread0.start() thread0.join() eve = 'not start' if eve == 'stop' : break if eve == 'Start skript' : for i in range(100) : print (i) break if eve == 'Start test th' : thread1 = testth('Thread1', 1) thread1.start() thread1.join() break break test()
Офлайн
py.user.next
Придётся учиться делать потоки. Потоки - это threads
import PySimpleGUI as sg import threading class win(threading.Thread): def __init__(self, name, counter): threading.Thread.__init__(self) self.threadID = counter self.name = name self.counter = counter def run(self): layout = [ [sg.Cancel(),sg.Button('test'), sg.Button('start')] ] window = sg.Window('Test.py', layout) while True: event, values = window.read() if event in (None, 'stop'): break if event == 'start' : thread1 = st('Thread1', 1) thread1.start() class st(threading.Thread): def __init__(self, name, counter): threading.Thread.__init__(self) self.threadID = counter self.name = name self.counter = counter def run(self): for i in range(150): print(i) thread0 = win('Thread0', 0) thread0.start()
Офлайн