teclado raspberry pantalla instalar python tkinter raspberry-pi touchscreen keypad

python - raspberry - Necesita un teclado Gui para una pantalla táctil que genera un pin cuando el código es correcto



instalar pantalla 3.5 raspberry pi 3 (1)

Tengo una pi raspberry con una pantalla táctil que ejecuta raspbian, espero tener una Gui en la pantalla táctil que tenga un teclado numérico que cuando se ingresa una entrada correcta, un pin saldrá a un pestillo de la puerta o algo así. He estado haciendo una Gui con un número en (por Python) pero no puedo conseguir varios números para sentar uno al lado del otro. cualquier información ayudará con esto :) Gracias. Este es el código que utilicé para probar y colocar los botones (se puede ver que acabo de utilizar un botón LED de encendido / apagado simple Gui y lo usé para ver la ubicación de los botones)

from Tkinter import * import tkFont import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(40, GPIO.OUT) GPIO.output(40, GPIO.LOW) win = Tk() myFont = tkFont.Font(family = ''Helvetica'', size = 36, weight = ''bold'') def ledON(): print("LED button pressed") if GPIO.input(40) : GPIO.output(40,GPIO.LOW) ledButton["text"] = "LED OFF" else: GPIO.output(40,GPIO.HIGH) ledButton["text"] = "LED ON" def exitProgram(): print("Exit Button pressed") GPIO.cleanup() win.quit() win.title("LED GUI") exitButton = Button(win, text = "1", font = myFont, command = ledON, height =2 , width = 8) exitButton.pack(side = LEFT, anchor=NW, expand=YES) ledButton = Button(win, text = "2", font = myFont, command = ledON, height = 2, width =8 ) ledButton.pack(side = TOP, anchor=CENTER, expand=YES) ledButton = Button(win, text = "3", font = myFont, command = ledON, height = 2, width =8 ) ledButton.pack(side = RIGHT, anchor=NE, expand=YES) ledButton = Button(win, text = "4", font = myFont, command = ledON, height = 2, width =8 ) ledButton.pack(side = TOP, anchor=W, expand=YES) ledButton = Button(win, text = "5", font = myFont, command = ledON, height = 2, width =8 ) ledButton.pack(side = TOP, anchor=W, expand=YES) ledButton = Button(win, text = "6", font = myFont, command = ledON, height = 2, width =8 ) ledButton.pack(side = TOP, anchor=W, expand=YES) ledButton = Button(win, text = "7", font = myFont, command = ledON, height = 2, width =8 ) ledButton.pack(side = TOP, anchor=W, expand=YES) ledButton = Button(win, text = "8", font = myFont, command = ledON, height = 2, width =8 ) ledButton.pack(side = TOP, anchor=W, expand=YES) ledButton = Button(win, text = "9", font = myFont, command = ledON, height = 2, width =8 ) ledButton.pack(side = TOP, anchor=N, expand=YES) ledButton = Button(win, text = "0", font = myFont, command = ledON, height = 2, width =8 ) ledButton.pack(side = TOP, anchor=NW, expand=YES) mainloop()


Ejemplo simple con teclado:

Utilizo un pin global variable de cadena para mantener todos los números presionados.
(Puede usar list lugar de string )

La tecla * elimina el último número, la tecla # compara el pin con el texto "3529"

import tkinter as tk # --- functions --- def code(value): # inform function to use external/global variable global pin if value == ''*'': # remove last number from `pin` pin = pin[:-1] # remove all from `entry` and put new `pin` e.delete(''0'', ''end'') e.insert(''end'', pin) elif value == ''#'': # check pin if pin == "3529": print("PIN OK") else: print("PIN ERROR!", pin) # clear `pin` pin = '''' # clear `entry` e.delete(''0'', ''end'') else: # add number to pin pin += value # add number to `entry` e.insert(''end'', value) print("Current:", pin) # --- main --- keys = [ [''1'', ''2'', ''3''], [''4'', ''5'', ''6''], [''7'', ''8'', ''9''], [''*'', ''9'', ''#''], ] # create global variable for pin pin = '''' # empty string root = tk.Tk() # place to display pin e = tk.Entry(root) e.grid(row=0, column=0, columnspan=3, ipady=5) # create buttons using `keys` for y, row in enumerate(keys, 1): for x, key in enumerate(row): # `lambda` inside `for` has to use `val=key:code(val)` # instead of direct `code(key)` b = tk.Button(root, text=key, command=lambda val=key:code(val)) b.grid(row=y, column=x, ipadx=10, ipady=10) root.mainloop()

GitHub: furas / python-examples / tkinter / button-keypad