imprimer le reçu sur imprimante thermique python
Je crée un système d'inventaire sur python.i a besoin d'une réception d'impression plus douce après toutes les ventes effectuées. il a des ventes et des ventes de table de produit Les tables de vente se composent des colonnes suivantes - id, sous-total, salaire, solde. Les tables sales_products se composent des colonnes suivantes –id, sales_id, item, qty, price, total. les données sur les tables multipulets je ne sais pas comment enregistrer toute l'arborescence enregistrer sur la base de données. J'ai obtenu l'identifiant lastinsert ci-dessous dans la fonction de sauvegarde.
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()
Réponses
Voici comment je pense que vous devriez procéder avec la réception.
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()
Le \tajoutera 4 espaces à la fin de la lettre.
Vous pouvez remplacer les prix par vos e1.get()et tous.
Vous pouvez également l'utiliser grid()ici mais cela peut être encombrant et prendre plus de lignes.
Vérifiez ici comment imprimer en utilisant python
J'espère que vous avez une idée.
À votre santé