11import tkinter as tk
2- from tkinter import filedialog , messagebox
2+ from tkinter import messagebox
33from PIL import Image , ImageTk
44import barcode
55from barcode .writer import ImageWriter
@@ -16,23 +16,18 @@ def __init__(self, root):
1616 # 输入标签和文本框
1717
1818 self .label = tk .Label (root , text = "请输入条形码数据(数字):" )
19-
2019 self .label .pack (pady = 10 )
21-
2220 self .entry = tk .Entry (root , width = 40 )
23-
2421 self .entry .pack (pady = 5 )
2522
2623 # 生成按钮
2724
2825 self .generate_button = tk .Button (root , text = "生成条形码" , command = self .generate_barcode )
29-
3026 self .generate_button .pack (pady = 10 )
3127
3228 # 用于显示条形码的标签
3329
3430 self .barcode_label = tk .Label (root )
35-
3631 self .barcode_label .pack (pady = 10 )
3732
3833 # 初始化条形码图像为None
@@ -49,7 +44,6 @@ def generate_barcode(self):
4944
5045 if not data :
5146 messagebox .showerror ("错误" , "请输入条形码数据!" )
52-
5347 return
5448
5549 # 尝试生成条形码
@@ -59,17 +53,14 @@ def generate_barcode(self):
5953 # 这里我们使用ean13作为示例,但你可以根据需要更改
6054
6155 EAN = barcode .get_barcode_class ('ean13' )
62-
6356 ean = EAN (data , writer = ImageWriter ())
6457
6558 # 保存条形码到内存中的字节流
6659
6760 from io import BytesIO
6861
6962 buffer = BytesIO ()
70-
7163 ean .save (buffer , format = 'PNG' )
72-
7364 buffer .seek (0 )
7465
7566 # 将字节流转换为PIL图像
@@ -83,21 +74,14 @@ def generate_barcode(self):
8374 # 更新条形码标签以显示新图像
8475
8576 self .barcode_label .config (image = tk_image )
86-
8777 self .barcode_label .image = tk_image # 保持对图像的引用
8878
8979 # 可选:提供保存条形码的选项
90-
9180 # save_path = filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("PNG files", "*.png")])
92-
9381 # if save_path:
94-
9582 # self.barcode_image.save(save_path)
96-
9783 # messagebox.showinfo("成功", f"条形码已保存到 {save_path}")
9884
99-
100-
10185 except barcode .writer .WriterException as e :
10286
10387 messagebox .showerror ("条形码生成失败" , f"错误: { e } " )
@@ -109,7 +93,6 @@ def generate_barcode(self):
10993
11094if __name__ == "__main__" :
11195 root = tk .Tk ()
112-
11396 app = BarcodeGeneratorApp (root )
114-
115- root . mainloop ()
97+ root . mainloop ()
98+
0 commit comments