Así que imagine que estamos abriendo un nuevo restaurante o siendo designados como uno de los empleados en una empresa de restaurantes, y descubrimos que no existe un método rápido para realizar la facturación de los clientes, y por lo general nos toma tiempo calcular la cantidad. que un cliente tiene que pagar. Esto puede ser realmente molesto y tomar mucho tiempo para nosotros y para los clientes. ¿Entonces que hago ahora? Aquí es cuando Python viene al rescate y como lo sabemos, serán solo unos segundos de trabajo.
Entonces, en este artículo, vamos a construir un sistema de facturación GUI y una tarjeta de menú con la ayuda del módulo Tkinter de Python .
Paso 1: importar el paquete tkinter
from tkinter import *
Paso 2: Descarga de los archivos necesarios
Aquí hay solo un archivo que tenemos que instalar en este proyecto que funcionará como la imagen de fondo de nuestro Sistema de Facturación GUI o podemos elegir cualquier otra imagen. Después de la descarga, asegúrese de que el programa Python que estamos creando y estos activos estén en la misma carpeta.
Imagen utilizada:
Paso 3: hacer una ventana de tkinter y configurar el fondo
Ahora creamos la ventana tkinter y configuramos el fondo para la GUI
Python3
# import tkinter module from tkinter import * # make a window window = Tk() # specify it's size window.geometry("700x600") # take a image for background bg = PhotoImage(file='bg.png') # label it in the background label17 = Label(window, image=bg) # position the image as well label17.place(x=0, y=0) # closing the main loop window.mainloop()
Producción:
Paso 4: agregar el título y la tarjeta de menú
Ahora agregaremos el título y la tarjeta de menú para el sistema de facturación GUI con la ayuda de la función » Etiqueta()». Tkinter Label es un widget que se utiliza para implementar cuadros de visualización donde podemos colocar texto o imágenes. El desarrollador puede cambiar el texto que muestra este widget en cualquier momento que desee. También se utiliza para realizar tareas como subrayar una parte del texto y dividir el texto en varias líneas. Es importante tener en cuenta que una etiqueta solo puede usar una fuente a la vez para mostrar el texto. Para usar una etiqueta, solo tenemos que especificar qué mostrar en ella (puede ser texto, un mapa de bits o una imagen).
Sintaxis: w = Etiqueta (maestro, opción, …)
Parámetros:
- maestro: esto representa la ventana principal
- opciones: estas opciones se pueden usar como pares clave-valor separados por comas
Python3
# main title label8 = Label(window, text="Saransh Restaurant", font="times 28 bold") label8.place(x=350, y=20, anchor="center") # Menu Card label1 = Label(window, text="Menu", font="times 28 bold") label1.place(x=520, y=70) label2 = Label(window, text="Aloo Paratha Rs 30", font="times 18") label2.place(x=450, y=120) label3 = Label(window, text="Samosa Rs 5", font="times 18") label3.place(x=450, y=150) label4 = Label(window, text="Pizza Rs 150", font="times 18") label4.place(x=450, y=180) label5 = Label(window, text="Chilli Potato Rs 50", font="times 18") label5.place(x=450, y=210) label6 = Label(window, text="Chowmein Rs 70", font="times 18") label6.place(x=450, y=240) label7 = Label(window, text="Gulab Jamun Rs 35", font="times 18") label7.place(x=450, y=270) # closing the main loop window.mainloop()
Producción:
Paso 5: Agregar la sección de facturación
Ahora agregaremos la sección de facturación usando el mismo widget de etiqueta y el widget de entrada. El widget de entrada es un widget de Tkinter que se utiliza para ingresar o mostrar una sola línea de texto. Además, Label.place(x,y) indica la posición de la etiqueta en la ventana de tkinter.
Sintaxis: entrada = tk.Entry(padre, opciones)
Parámetros:
- padre: esto representa la ventana principal
- opciones: estas opciones se pueden usar como pares clave-valor separados por comas
Python3
#------billing section--------- label9=Label(window,text="Select the items", font="times 18") label9.place(x=115,y=70) label10=Label(window,text="Aloo Paratha", font="times 18") label10.place(x=20,y=120) e1=Entry(window) e1.place(x=20,y=150) label11=Label(window,text="Samosa", font="times 18") label11.place(x=20,y=200) e2=Entry(window) e2.place(x=20,y=230) label12=Label(window,text="Pizza", font="times 18") label12.place(x=20,y=280) e3=Entry(window) e3.place(x=20,y=310) label13=Label(window,text="Chilli Potato", font="times 18") label13.place(x=20,y=360) e4=Entry(window) e4.place(x=20,y=390) label14=Label(window,text="Chowmein", font="times 18") label14.place(x=250,y=120) e5=Entry(window) e5.place(x=250,y=150) label15=Label(window,text="Gulab Jamun", font="times 18") label15.place(x=250,y=200) e6=Entry(window) e6.place(x=250,y=230) # closing the main loop window.mainloop()
Producción:
Paso 6: Calcular la factura y actualizar la ventana
Después de eso, tenemos que agregar la función de cálculo que se ejecutará cada segundo. En la función de cálculo, tenemos que hacer cálculos matemáticos simples donde si e.get() devuelve una string vacía, significa que no hay una cantidad seleccionada para ese alimento en particular, de lo contrario, si hay algún valor presente en e.get() entonces ya que es de tipo string, lo convertimos a tipo int y multiplicamos esta cantidad de comida por el precio de esa comida. La variable comida junto con su cantidad y precio se guarda en un diccionario. Buscamos todas las claves en el diccionario y, en consecuencia, incrementamos nuestra variable ‘total’. Después de eso, hacemos otra etiqueta donde usamos el valor de la variable total para mostrar la cantidad total de alimentos pedidos. Luego hicimos un comando que después de cada 1000 milisegundos actualizamos la ventana para calcular nuevamente la cantidad total de alimentos pedidos que actualizará nuestra GUI. Además, la etiqueta de cantidad total se actualiza destruyendo la anterior y actualizándola con una nueva cada segundo.
Python3
# function to calculate the # price of all the orders def calculate(): # dic for storing the food quantity and price dic = {'aloo_partha': [e1, 30], 'samosa': [e2, 5], 'pizza': [e3, 150], 'chilli_potato': [e4, 50], 'chowmein': [e5, 70], 'gulab_jamun': [e6, 35]} total = 0 for key, val in dic.items(): if val[0].get() != "": total += int(val[0].get())*val[1] label16 = Label(window, text="Your Total Bill is - "+str(total), font="times 18") # position label16.place(x=20, y=490) # it will update the label with a new one label16.after(1000, label16.destroy) # refreshing the window window.after(1000, calculate) # execute calculate function after 1 second window.after(1000, calculate) window.mainloop()
Producción:
A continuación se muestra la implementación completa:
Python3
# import tkinter module from tkinter import * # make a window window = Tk() # specify it's size window.geometry("700x600") # take a image for background bg = PhotoImage(file='bg.png') # label it in the background label17 = Label(window, image=bg) # position the image as well label17.place(x=0, y=0) # function to calculate the # price of all the orders def calculate(): # dic for storing the # food quantity and price dic = {'aloo_partha': [e1, 30], 'samosa': [e2, 5], 'pizza': [e3, 150], 'chilli_potato': [e4, 50], 'chowmein': [e5, 70], 'gulab_jamun': [e6, 35]} total = 0 for key, val in dic.items(): if val[0].get() != "": total += int(val[0].get())*val[1] label16 = Label(window, text="Your Total Bill is - "+str(total), font="times 18") # position it label16.place(x=20, y=490) label16.after(1000, label16.destroy) window.after(1000, calculate) label8 = Label(window, text="Saransh Restaurant", font="times 28 bold") label8.place(x=350, y=20, anchor="center") label1 = Label(window, text="Menu", font="times 28 bold") label1.place(x=520, y=70) label2 = Label(window, text="Aloo Paratha \ Rs 30", font="times 18") label2.place(x=450, y=120) label3 = Label(window, text="Samosa \ Rs 5", font="times 18") label3.place(x=450, y=150) label4 = Label(window, text="Pizza \ Rs 150", font="times 18") label4.place(x=450, y=180) label5 = Label(window, text="Chilli Potato \ Rs 50", font="times 18") label5.place(x=450, y=210) label6 = Label(window, text="Chowmein \ Rs 70", font="times 18") label6.place(x=450, y=240) label7 = Label(window, text="Gulab Jamun \ Rs 35", font="times 18") label7.place(x=450, y=270) # billing section label9 = Label(window, text="Select the items", font="times 18") label9.place(x=115, y=70) label10 = Label(window, text="Aloo Paratha", font="times 18") label10.place(x=20, y=120) e1 = Entry(window) e1.place(x=20, y=150) label11 = Label(window, text="Samosa", font="times 18") label11.place(x=20, y=200) e2 = Entry(window) e2.place(x=20, y=230) label12 = Label(window, text="Pizza", font="times 18") label12.place(x=20, y=280) e3 = Entry(window) e3.place(x=20, y=310) label13 = Label(window, text="Chilli Potato", font="times 18") label13.place(x=20, y=360) e4 = Entry(window) e4.place(x=20, y=390) label14 = Label(window, text="Chowmein", font="times 18") label14.place(x=250, y=120) e5 = Entry(window) e5.place(x=250, y=150) label15 = Label(window, text="Gulab Jamun", font="times 18") label15.place(x=250, y=200) e6 = Entry(window) e6.place(x=250, y=230) # execute calculate function after 1 second window.after(1000, calculate) # closing the main loop window.mainloop()
Producción:
Publicación traducida automáticamente
Artículo escrito por saranshsahgal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA