Numpad в питоне с графическим интерфейсом - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь сделать простую цифровую клавиатуру, созданную с помощью guizero в python, где у каждого номера есть кнопка, и когда кнопки нажимаются, они возвращают свой номер в текстовое поле, где в текстовое поле введен PIN-код сна экранной клавиатуре или клавиатуре и проверьте, совпадает ли значение текстового поля со значением, хранящимся в переменной с именем pin.Кнопка ввода на цифровой клавиатуре будет аналогична нажатию клавиши ввода на клавиатуре.Я много чего перепробовал, но при возврате из функции, которую вызывает кнопка, выдает ошибку, или функция установит значение текстового поля без нажатия кнопки.Если кто-то может прислать мне некоторые изменения, которые делают это для меня, я был бы очень благодарен.Макет Numpad: 1 2 3 4 5 6 7 8 9 0

Enter

Это код, который у меня есть (у меня есть только 3 кнопки для сохранения визуального пространства, и я знаю, что длявсе 10 кнопок должны просто дублировать их:

import guizero as gz

global pin
pin = ""

def pressed_1(number):
    text_pin.set(number)
def pressed_2(number):
    text_pin.set(number)
def pressed_3(number):
    text_pin.set(number)

def main():
    app = gz.App(title="pin",layout="grid")
    global text_pin
    text_pin = gz.TextBox(app,text=pin,grid=[0,0])
    button_1 = gz.PushButton(app,text="1",command=pressed_1("1"),grid=[1,1])
    button_2 = gz.PushButton(app,text="2",command=pressed_2("2"),grid=[2,1])
    button_3 = gz.PushButton(app,text="3",command=pressed_3("3"),grid=[3,1])
    app.display()
main()

Спасибо всем

1 Ответ

0 голосов
/ 14 января 2019

Я также делаю цифровую клавиатуру для использования с Raspberry Pi.Вот мой код.Вы можете адаптировать его, чтобы использовать любой метод, который вы хотите.Но в основном вы назначаете вход как вид массива, и когда кто-то нажимает на кнопку, он добавляет это число к «массиву», который является входом.Я уверен, что есть лучший и более быстрый способ сделать это, но я, честно говоря, не знаю Python, только C ++, поэтому я бы не знал.Я еще не проверял это с моим пи, но думаю, что это сработает.

from guizero import App, Text, TextBox, PushButton
def fetch_response():
    user = submits.value
    if user == "1234":
        sleep(1)
        app.hide()

def Keypad__1():
   submits.append('1')
def Keypad__2():
   submits.append('2')
def Keypad__3():
   submits.append('3')
def Keypad__4():
   submits.append('4')
def Keypad__5():
   submits.append('5')
def Keypad__6():
   submits.append('6')
def Keypad__7():
   submits.append('7')
def Keypad__8():
   submits.append('8')
def Keypad__9():
   submits.append('9')
def Keypad__0():
   submits.append('0')
def Clearapp():
   submits.clear()
submit = PushButton(app, fetch_response, text="Submit", grid=[410, 300])
Clear_app = PushButton(app, Clearapp, text="Clear", grid=[410, 325])
app = App(title="KeyPad", width=800, height=480, layout="grid")
Keypad_1 = PushButton(app, Keypad__1, text="1", grid=[0, 400])
Keypad_1.width = 8
Keypad_1.height = 4
Keypad_2 = PushButton(app, Keypad__2, text="2", grid=[50, 400])
Keypad_2.width = 8
Keypad_2.height = 4
Keypad_3 = PushButton(app, Keypad__3, text="3", grid=[100, 400])
Keypad_3.width = 8
Keypad_3.height = 4
Keypad_4 = PushButton(app, Keypad__4, text="4", grid=[0, 450])
Keypad_4.width = 8
Keypad_4.height = 4
Keypad_5 = PushButton(app, Keypad__5, text="5", grid=[50, 450])
Keypad_5.width = 8
Keypad_5.height = 4
Keypad_6 = PushButton(app, Keypad__6, text="6", grid=[100, 450])
Keypad_6.width = 8
Keypad_6.height = 4
Keypad_7 = PushButton(app, Keypad__7, text="7", grid=[0, 500])
Keypad_7.width = 8
Keypad_7.height = 4
Keypad_8 = PushButton(app, Keypad__8, text="8", grid=[50, 500])
Keypad_8.width = 8
Keypad_8.height = 4
Keypad_9 = PushButton(app, Keypad__9, text="9", grid=[100, 500])
Keypad_9.width = 8
Keypad_9.height = 4
Keypad_0 = PushButton(app, Keypad__0, text="0", grid=[50, 550])
Keypad_0.width = 8
Keypad_0.height = 4
...