我對這段代碼有一個奇怪的問題。這段代碼所做的是創建一個 GUI,我在其中輸入一個數值,然后使用 Spin 元素選擇我想要轉換的內容,最后我通過使用 outputString 變數更新輸出文本來顯示結果。當我從 Kg 轉換為 Pound 時,它作業正常,顯示它應該顯示的訊息,當我從 Seconds 轉換為 Min 時,顯示以下錯誤:“NameError: name 'outputString' is not defined”,當我從Km to Miles 它給了我同樣的錯誤:“NameError: name 'outputString' is not defined”。任何想法可能會發生什么?
import PySimpleGUI as sg
layout = [
[
sg.Input(key="-INPUT-"),
sg.Spin("Km to Miles", "Kg to Pound", "Seconds to Min", key="-UNITS-"),
sg.Button("Convert", key="-CONVERT-")
],
[sg.Text("Output", key="-OUTPUT-")]
]
window = sg.Window("Converter", layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
if event == "-CONVERT-":
inputValue = values["-INPUT-"]
if inputValue.isnumeric():
match values["-UNITS-"]:
case "Km to Miles":
output = round(float(inputValue) * 0.6254)
outputString = f"{inputValue} km are {output} miles."
case "Kg to Pound":
output = round(float(inputValue) * 2.205)
outputString = f"{inputValue} kg are {output} pounds."
case "Seconds to Min":
output = round(float(inputValue) / 60)
outputString = f"{inputValue} seconds are {output} minutes."
window["-OUTPUT-"].update(outputString)
window.close()
uj5u.com熱心網友回復:
outputString
目前只作用于 map 陳述句內部,所以需要在 match 陳述句之外宣告。
if event == "-CONVERT-":
inputValue = values["-INPUT-"]
if inputValue.isnumeric():
outputString = ""
match values["-UNITS-"]:
case "Km to Miles":
output = round(float(inputValue) * 0.6254)
outputString = f"{inputValue} km are {output} miles."
window["-OUTPUT-"].update(outputString)
現在的問題是,如果沒有匹配的案例outputString
將是空的。想一想如果沒有匹配到 case 需要發生什么(可能添加一個case _:
引發例外或寫入默認值的默認 case)。
uj5u.com熱心網友回復:
顯然,錯誤不是由于變數,而是來自 PySimpleGUI 的 sg.Spin 元素的錯誤,因為每當單擊它時,名稱都會更改,因此沒有有效的案例。
uj5u.com熱心網友回復:
Spin
您的元素中缺少括號。該引數是一個選項串列。
import PySimpleGUI as sg
layout = [
[
sg.Input(key="-INPUT-"),
sg.Spin(["Km to Miles", "Kg to Pound", "Seconds to Min"], readonly=True, key="-UNITS-"),
sg.Button("Convert", key="-CONVERT-")
],
[sg.Text("Output", key="-OUTPUT-")]
]
window = sg.Window("Converter", layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
if event == "-CONVERT-":
inputValue = values["-INPUT-"]
if inputValue.isnumeric():
match values["-UNITS-"]:
case "Km to Miles":
output = round(float(inputValue) * 0.6254)
outputString = f"{inputValue} km are {output} miles."
case "Kg to Pound":
output = round(float(inputValue) * 2.205)
outputString = f"{inputValue} kg are {output} pounds."
case "Seconds to Min":
output = round(float(inputValue) / 60)
outputString = f"{inputValue} seconds are {output} minutes."
window["-OUTPUT-"].update(outputString)
window.close()
如果您使用的是 IDE,例如 PyCharm,那么檔案字串將輕松標記這些型別不匹配錯誤:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/473839.html
下一篇:返回列表