updated for the start
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
label/
|
||||
62
app.py
Normal file
62
app.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import tkinter as tk
|
||||
from tkinter import simpledialog, messagebox
|
||||
from PIL import Image, ImageTk
|
||||
import barcode
|
||||
from barcode.writer import ImageWriter
|
||||
import cups
|
||||
import os
|
||||
|
||||
def get_printers():
|
||||
conn = cups.Connection()
|
||||
return list(conn.getPrinters().keys())
|
||||
|
||||
def print_label(printer_name, text):
|
||||
# Generate barcode image
|
||||
CODE128 = barcode.get_barcode_class('code128')
|
||||
code = CODE128(text, writer=ImageWriter())
|
||||
filename = code.save('label_barcode')
|
||||
|
||||
# Create label image with text and barcode
|
||||
barcode_img = Image.open(filename + '.png')
|
||||
label_img = Image.new('RGB', (barcode_img.width, barcode_img.height + 40), 'white')
|
||||
label_img.paste(barcode_img, (0, 0))
|
||||
|
||||
# Add text below barcode
|
||||
from PIL import ImageDraw, ImageFont
|
||||
draw = ImageDraw.Draw(label_img)
|
||||
font = ImageFont.load_default()
|
||||
w, h = draw.textsize(text, font=font)
|
||||
draw.text(((barcode_img.width - w) // 2, barcode_img.height + 10), text, fill='black', font=font)
|
||||
|
||||
label_img.save('final_label.png')
|
||||
|
||||
# Print using CUPS
|
||||
conn = cups.Connection()
|
||||
conn.printFile(printer_name, 'final_label.png', "Label Print", {})
|
||||
os.remove(filename + '.png')
|
||||
os.remove('final_label.png')
|
||||
|
||||
def main():
|
||||
root = tk.Tk()
|
||||
root.withdraw()
|
||||
|
||||
printers = get_printers()
|
||||
if not printers:
|
||||
messagebox.showerror("Error", "No printers found.")
|
||||
return
|
||||
|
||||
printer = simpledialog.askstring("Printer", f"Available printers:\n{printers}\nEnter printer name:")
|
||||
if printer not in printers:
|
||||
messagebox.showerror("Error", "Invalid printer selected.")
|
||||
return
|
||||
|
||||
text = simpledialog.askstring("Label Text", "Enter text for the label:")
|
||||
if not text:
|
||||
messagebox.showerror("Error", "No text entered.")
|
||||
return
|
||||
|
||||
print_label(printer, text)
|
||||
messagebox.showinfo("Done", "Label sent to printer.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
11
how_to.txt
Normal file
11
how_to.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
install
|
||||
|
||||
sudo apt-get install libcups2-dev
|
||||
|
||||
|
||||
create venv or install with --breack-system-pakage
|
||||
|
||||
|
||||
python -m venv label
|
||||
|
||||
pip install -r requirements.txt
|
||||
3
requirements.txt
Normal file
3
requirements.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
python-barcode
|
||||
pillow
|
||||
pycups
|
||||
Reference in New Issue
Block a user