Не совсем понимаю почему окно ввода не обновляется в PySimpleGUI
import PySimpleGUI as sg
col_1 = [
[sg.B('7', size=(4,2), font="bold"), sg.B('8', size=(4,2), font="bold"), sg.B('9', size=(4,2), font="bold")],
[sg.B('4', size=(4,2), font="bold"), sg.B('5', size=(4,2), font="bold"), sg.B('6', size=(4,2), font="bold")],
[sg.B('1', size=(4,2), font="bold"), sg.B('2', size=(4,2), font="bold"), sg.B('3', size=(4,2), font="bold")],
[sg.B('+/-', size=(4,2), font="bold", key="-OPPOSITE-"), sg.B('0', size=(4,2), font="bold"), sg.B('.', size=(4,2), font="bold", key="-FLOAT-")]
]
col_2 = [
[sg.B('+', size=(4,2), font="bold", key="-PLUS-")],
[sg.B('-', size=(4,2), font="bold", key="-MINUS-")],
[sg.B('/', size=(4,2), font="bold", key="-DIVIDE-")],
[sg.B('*', size=(4,2), font="bold", key="-MULTIPLY-")]
]
col_3 = [
[sg.B('CE', size=(4,2), font="bold", key="-CLEAR-")],
[sg.B('Sqrt', size=(4,2), font="bold", key="-SQRT-")],
[sg.B('=', size=(4,5), font="bold", key="-EQUALS-")],
]
layout = [
[sg.Input(font=(None, 30), size=(13,1), key="-INPUT-")],
[sg.Col(col_1), sg.VerticalSeparator(), sg.Col(col_2), sg.Col(col_3)]
]
num = (str(i) for i in range(10)) # почему то с кортежом не работает
actions = ''
window = sg.Window("Calculator", layout)
while True:
event, values = window.read()
if event in (sg.WIN_CLOSED, 'Cancel'):
break
elif event in num:
actions += event
window["-INPUT-"].update(actions)
Объясните, пожалуйста, почему, если num кортеж, то поле ввода разрешает только 1 раз ввести цифру, но если num список, то всё работает как нужно. Я ведь проверяю только вхождение в num, а не добавляю туда что-то.
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
num = [str(i) for i in range(10)]
print(num)
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
[Program finished]
num = (str(i) for i in range(10))
print(num)
<generator object <genexpr> at 0x73c420d540>
[Program finished]
Потому что вы получаете генератор.
num = (str(i) for i in range(10))
for value in num:
print(value)
0
1
2
3
4
5
6
7
8
9
[Program finished]