# encoding:utf-8 import config import gradio as gr from channel import channel_factory from common.log import logger from io import BytesIO from PIL import Image from concurrent.futures import ThreadPoolExecutor thread_pool = ThreadPoolExecutor(max_workers=8) def getImage(bytes): bytes_stream = BytesIO(bytes) image = Image.open(bytes_stream) return image def getLoginUrl(): # load config config.load_config() # create channel bot = channel_factory.create_channel("wx") thread_pool.submit(bot.startup) while (True): if bot.getQrCode(): return getImage(bot.getQrCode()) if __name__ == '__main__': try: with gr.Blocks() as demo: with gr.Row(): with gr.Column(): btn = gr.Button(value="生成二维码") with gr.Column(): outputs=[gr.Pil()] btn.click(getLoginUrl, outputs=outputs) demo.launch() except Exception as e: logger.error("App startup failed!") logger.exception(e)