Найти - Пользователи
Полная версия: Передать управление системе (Tkinter)
Начало » GUI » Передать управление системе (Tkinter)
1
Didis
Запустил скрипт с окном из другого приложения (на Tkinter), окно блокирует перерисовку окна базового приложения. Как передавать управление системе (windows) для обработки событий на некоторое время ?
igor.kaist
Каким образом ты запускаешь внешнюю программу?
Попробуй через subprocess.
Скорее всего, твоя программа (tkinter) ждет завершения внешнего процесса, и не идет цикл mainloop, в котором то как раз происходит отрисовка и реакция на события.
Didis
Питон - скриптовый язык приложения (Blender). Окно созданное независимо отрисовывается нормуль, а при запуске из-под приложения - косяк, при перетаскивании не перерисовывается освобожденная область. Реакцию на события (eventы) не писал (еще не знаком), т.е. цикл mainloop гоняется пустым. Subprocess для меня крутовато звучит, может в tkinter можно организовать, что-то по смыслу ON_TKINTER_UPDATE { … ; MAIN_APLICATION_UPDATE()}- принудительно обновлять базовое приложение при обновлении окна tkinter.
igor.kaist
Посмотри метод update…
Когда запускается gui приложение, то оно mainloop вызывает бесконечный цикл, в котором отрисовываются виджеты, происходит реакция на какие либо события (например на нажатия кнопок)
пример:
import time
from Tkinter import *
root=Tk()

def do():time.sleep(20)

b=Button(root,text='do',command=do)
b.pack()
root.mainloop()
при нажатии на кнопку, происходит замораживание цикла mainloop, и 20 секунд окно не будет ни на что реагировать.
В твоем случае, насколько я понял, приложение так же ждет завершения работы команды, заданной в popen.
Вместо os.popen(COMMAND), попробуй сделать subprocess.popen
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