所以我在2个脚本中尝试了相同的方法,但是由于某种原因,最后一个不起作用,而第一个代码就很好了。
def convert(str):
str = int(str)
values0 = 123
values1 = 1
try:
convert(values0) and convert(values1)
pass
except ValueError:
sg.PopupError('Only numbers accepted.')
#Now if I try to multiply those values
print(values0 * values1)
#Works!
但是出于某种未知的原因,我却没有。
#But for some reason this doesn't work in my homework: Maybe because of PySimpleGUI?
import PySimpleGUI as sg
import math
layout = [
[sg.Text('Enter how many hours you want to work: ')], [sg.InputText('')],
[sg.Text('Enter how many pay you want per hour: ')], [sg.InputText('')],
[sg.Button('Calculate Pay')], [sg.Cancel()] ]
window = sg.Window('Pay', layout)
def convert(str):
str = int(str)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == 'Cancel':
break
if event == 'Calculate Pay':
try:
convert(values[0]) and convert(values[1]) # I convert here
break
except ValueError:
sg.PopupError('Only numbers accepted.')
sg.Popup('Your pay is: ', values[0] * values[1]) # But this doesn't work
window.close()
抱歉,如果这是一个愚蠢的问题,我是一个完全的初学者,没有任何编码经验。
答案 0 :(得分:0)
def convert(str):
str = int(str)
您的convert
函数无法满足您的要求。它为局部变量分配了一些内容,该变量在函数外部无效(除非int(str)
引发异常)。
摆脱convert
,然后写出
values[0] = int(values[0])
等