如何让python ctypes调用的函数保持运行

2024-10-06 12:04:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个使用ctypes调用winsparkle C库的最小python脚本。只有我逐行运行代码,win_sparkle_check_update_without_ui()会弹出一个窗口,按预期下载更新。但是正常运行脚本这个函数只会被立即调用和跳过,它不会保持打开状态,除非我添加hacky时间。睡觉选项。在

什么是正确的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))

Tags: 函数self脚本urluidefcheckunicode