[Tkinter 101] 11 qrcode字符串生成二维码,Button click事件,创建多级目录保存图片

根据文本框的字符串,创建二维码。文件保存到output目录的子目录里面,如果目录不存在,则创建多级子目录。

 

创建多级子目录,如果目录存在,捕获异常不处理。代码:

    def create_output_dir(self):
        #根据模块名称,创建多级目录
        output_dirs = os.path.join(Constants.OUTPUT_DIR, self.__class__.__name__)
        try:
            # makedirs批量创建目录
            os.makedirs(output_dirs)
        except FileExistsError as e:
            pass

        return os.path.join(os.getcwd(), output_dirs)

文本框输入内容作为创建二维码的数据。文件名以时间戳命名。代码:


    def _on_create_image_btn_click(self):
        qr = qrcode.QRCode(version=1,
                           error_correction=qrcode.constants.ERROR_CORRECT_L,
                           box_size=10, border=2)
        content = self.input_text.get("1.0", "end")
        if content == "\n":
            return

        output_dir = self.create_output_dir()
        time_stamp = time.localtime()
        qr.add_data(content)
        self.default_qr_image = qr.make_image(fill_color="black", back_color="white")
        file_full_path = os.path.join(output_dir, f"%d%02d%02d-%02d%02d%02d.png" % (time_stamp.tm_year,
                                                                                    time_stamp.tm_mon,
                                                                                    time_stamp.tm_mday,
                                                                                    time_stamp.tm_hour,
                                                                                    time_stamp.tm_min,
                                                                                    time_stamp.tm_sec))
        self.default_qr_image.save(file_full_path)

        # replace UI image
        img_copy = self.default_qr_image.resize((self.image_length, self.image_length))
        self.default_qr_photo_image = ImageTk.PhotoImage(img_copy)
        self.default_qr_image_label.config(image=self.default_qr_photo_image)

绑定click事件,代码:

        mid_area = tk.Frame(root)
        mid_area.place(anchor=tk.NW, relwidth=0.2, relheight=1, relx=0.4)
...
        btn = tk.Button(mid_area, text=self.loc_helper.get_string("CREATE_IMAGE"))
        btn.place(anchor=tk.CENTER, relx=0.5, rely=0.5)
        btn.config(command=self._on_create_qrcode_btn_click)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值