imprimir el recibo en impresora térmica python
Estoy creando un sistema de inventario en python.Necesito un recibo de impresión distinguido después de todas las ventas realizadas.cuando hago clic en el botón Guardar.Estoy usando la base de datos mysql. tiene tablas de ventas y productos de ventas. Las tablas de ventas constan de las siguientes columnas: id, subtotal, pago y saldo. Las tablas de sales_products consisten en las siguientes columnas: id, sales_id, item, qty, price, total necesidad de guardar los datos en dos tablas diferentes cuando presiono el botón de guardar al mismo tiempo, se debe mostrar el recibo de impresión. No sé cómo guardar los datos en las tablas de multipule no sé cómo guardar toda la vista de árbol guardar en la base de datos. obtuve la última identificación de inserción a continuación en la función de guardar.
from tkinter import ttk
from tkinter import *
from tkinter import messagebox
import mysql.connector
def save():
totall = float(tot.cget("text"))
pay = float(e11.get())
bal = pay - totall
mysqldb = mysql.connector.connect(host="localhost", user="root", password="", database="milkshop")
mycursor = mysqldb.cursor()
try:
sql = "INSERT INTO sales (id,subtotal,pay,balance) VALUES (%s, %s, %s, %s)"
val = ("", totall, pay, bal)
mycursor.execute(sql, val)
mysqldb.commit()
lastid = mycursor.lastrowid
except Exception as e:
print(e)
mysqldb.rollback()
mysqldb.close()
def pay():
totall = float(tot.cget("text"))
pay = float(e11.get())
bal = pay - totall
balText.set(bal)
root = Tk()
root.title("Inventory System using Python")
root.geometry("1000x600")
global e1
global e2
global e3
global e4
global totText
global balText
totText = StringVar()
balText = IntVar()
Label(root, text="Inventory System using Python", font="arial 22 bold").place(x=5, y=10)
var1 = IntVar()
Checkbutton(root, text="Thai Fried Rice", variable=var1).place(x=10, y=50)
var2 = IntVar()
Checkbutton(root, text="Basil Fried Rice", variable=var2).place(x=10, y=80)
var3 = IntVar()
Checkbutton(root, text="Pineapple Fried Rice", variable=var3).place(x=10, y=110)
var4 = IntVar()
Checkbutton(root, text="Crab Fried Rice", variable=var4).place(x=10, y=140)
var5 = IntVar()
Checkbutton(root, text=" Fish Fried Rice ", variable=var5).place(x=10, y=170)
Label(root, text="Total").place(x=600, y=10)
Label(root, text="Pay").place(x=600, y=50)
Label(root, text="Balance").place(x=600, y=80)
e8 = Entry(root)
e8.place(x=300, y=110)
e9 = Entry(root)
e9.place(x=300, y=140)
e10 = Entry(root)
e10.place(x=300, y=170)
tot = Label(root, text="", font="arial 22 bold", textvariable=totText)
tot.place(x=650, y=10)
e11 = Entry(root)
e11.place(x=650, y=50)
e12 = Entry(root)
balance = Label(root, text="", font="arial 22 bold", textvariable=balText).place(x=650, y=80)
Button(root, text="Add", command=show, height=3, width=13).place(x=10, y=220)
Button(root, text="PayNow", command=pay, height=3, width=13).place(x=650, y=120)
Button(root, text="Save", command=save, height=3, width=13).place(x=750, y=120)
cols = ('item', 'price', 'qty', 'total')
listBox = ttk.Treeview(root, columns=cols, show='headings')
for col in cols:
listBox.heading(col, text=col)
listBox.grid(row=1, column=0, columnspan=2)
listBox.place(x=10, y=300)
root.mainloop()
Respuestas
Así es como creo que debe proceder con el recibo.
from tkinter import *
root = Tk()
def reciept():
top = Toplevel()
price1 = 3000
qty1 = 3
total1 = price1*qty1
price2 = 5000
qty2 = 4
total2 = price1*qty2
l = Label(top,text='---------RECIEPT----------')
l.pack()
heading = Label(top,text='PRICE\tQTY\tTOTAL')
heading.pack()
item1 = Label(top,text=f'{price1}\t{qty1}\t{total1}')
item1.pack()
item2 = Label(top,text=f'{price2}\t{qty2}\t{total2}')
item2.pack()
b = Button(root,text='Print reciept',command=reciept)
b.pack(padx=10,pady=10)
root.mainloop()
El \tagregará 4 espacios al final de la carta.
Puede reemplazar los precios con su e1.get()y todo.
También puede usar grid()aquí, pero puede ser engorroso y requiere más líneas.
Consulte aquí cómo imprimir usando Python
Espero que tengas una idea.
Salud