1
1
import tkinter as tk
2
- from tkinter import filedialog , messagebox
2
+ from tkinter import messagebox
3
3
from PIL import Image , ImageTk
4
4
import barcode
5
5
from barcode .writer import ImageWriter
@@ -16,23 +16,18 @@ def __init__(self, root):
16
16
# 输入标签和文本框
17
17
18
18
self .label = tk .Label (root , text = "请输入条形码数据(数字):" )
19
-
20
19
self .label .pack (pady = 10 )
21
-
22
20
self .entry = tk .Entry (root , width = 40 )
23
-
24
21
self .entry .pack (pady = 5 )
25
22
26
23
# 生成按钮
27
24
28
25
self .generate_button = tk .Button (root , text = "生成条形码" , command = self .generate_barcode )
29
-
30
26
self .generate_button .pack (pady = 10 )
31
27
32
28
# 用于显示条形码的标签
33
29
34
30
self .barcode_label = tk .Label (root )
35
-
36
31
self .barcode_label .pack (pady = 10 )
37
32
38
33
# 初始化条形码图像为None
@@ -49,7 +44,6 @@ def generate_barcode(self):
49
44
50
45
if not data :
51
46
messagebox .showerror ("错误" , "请输入条形码数据!" )
52
-
53
47
return
54
48
55
49
# 尝试生成条形码
@@ -59,17 +53,14 @@ def generate_barcode(self):
59
53
# 这里我们使用ean13作为示例,但你可以根据需要更改
60
54
61
55
EAN = barcode .get_barcode_class ('ean13' )
62
-
63
56
ean = EAN (data , writer = ImageWriter ())
64
57
65
58
# 保存条形码到内存中的字节流
66
59
67
60
from io import BytesIO
68
61
69
62
buffer = BytesIO ()
70
-
71
63
ean .save (buffer , format = 'PNG' )
72
-
73
64
buffer .seek (0 )
74
65
75
66
# 将字节流转换为PIL图像
@@ -83,21 +74,14 @@ def generate_barcode(self):
83
74
# 更新条形码标签以显示新图像
84
75
85
76
self .barcode_label .config (image = tk_image )
86
-
87
77
self .barcode_label .image = tk_image # 保持对图像的引用
88
78
89
79
# 可选:提供保存条形码的选项
90
-
91
80
# save_path = filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("PNG files", "*.png")])
92
-
93
81
# if save_path:
94
-
95
82
# self.barcode_image.save(save_path)
96
-
97
83
# messagebox.showinfo("成功", f"条形码已保存到 {save_path}")
98
84
99
-
100
-
101
85
except barcode .writer .WriterException as e :
102
86
103
87
messagebox .showerror ("条形码生成失败" , f"错误: { e } " )
@@ -109,7 +93,6 @@ def generate_barcode(self):
109
93
110
94
if __name__ == "__main__" :
111
95
root = tk .Tk ()
112
-
113
96
app = BarcodeGeneratorApp (root )
114
-
115
- root . mainloop ()
97
+ root . mainloop ()
98
+
0 commit comments