1

我正在尝试创建一个使用 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))
4

0 回答 0