我正在尝试创建一个使用 ctypes 调用 winsparkle C 库的最小 python 脚本。该代码仅在我逐行运行时才有效,win_sparkle_check_update_without_ui()
弹出一个窗口以按预期下载更新。但是正常运行脚本这个函数只是被调用并立即跳过,它不会保持打开状态,除非我添加了 hacky time.sleep 选项。
运行此函数并使其保持打开状态直到用户关闭弹出窗口的正确pythonic方法是什么?
from ctypes import CDLL
import logging, time
class UpdateAgent(object):
def __init__(self, appcast_url):
self.appcast_url = appcast_url
def check_for_update(self):
winsparkle = CDLL("WinSparkle.dll")
url = self.appcast_url
winsparkle.win_sparkle_set_appcast_url(url.encode('ascii', 'ignore'))
winsparkle.win_sparkle_set_app_details(
unicode('Company'),
unicode('myapp'),
unicode(9))
winsparkle.win_sparkle_init()
winsparkle.win_sparkle_check_update_without_ui()
#time.sleep(10)
def run(self):
try:
self.check_for_update()
except Exception as e:
logging.info('%s' % (e))