根据文本框的字符串,创建二维码。文件保存到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)