распечатать чек на термопринтере python

Sep 05 2020

Я создаю систему инвентаризации на python. мне нужно создать получатель печати после всех продаж. когда я нажимаю кнопку сохранения. я использую базу данных mysql. в нем есть таблицы продаж и продаж. Таблицы продаж состоят из следующих столбцов - id, subtotal, pay, balance. Таблицы sales_products состоят из следующих столбцов –id, sales_id, item, qty, price, общая потребность в сохранении данных в двух разных таблицах, когда я одновременно нажимаю кнопку сохранения, должен отобразиться получатель печати. ​​Я не знаю, как сохранить данные о многополюсных таблицах, я не знаю, как сохранить все древовидные данные в базе данных. Я получил идентификатор lastinsert ниже в функции сохранения.

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()

Ответы

1 CoolCloud Sep 05 2020 at 10:34

Вот как, я думаю, вам следует продолжить получение.

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()

В \tконце буквы будет добавлено 4 пробела.

Вы можете заменить цены на свои e1.get()и все.

Вы также можете использовать grid()здесь, но это может быть громоздко и требует больше строк.

Узнайте здесь, как печатать с помощью Python

Надеюсь, у вас есть идея.

Ура