最近在寫一些處理芯片數據的代碼,想給小伙伴們用,就想到寫個GUI的頁面,正好有人推薦使用PySimpleGUI, 首次使用就遇到了坑:
# -*- coding: utf-8 -*- """ Created on Sat Jul 17 18:06:18 2021 處理系譜文件 @author: 高雪峰 Alex GAO """ import PySimpleGUI as sg sg.theme("BluePurple") layout = [[sg.Text('請輸入F90整理的系譜文件名稱:'),sg.Text(size=(20,1),key = ('-OUTPUT-'))], [sg.Input(key = '-IN-')], [sg.Button('Read'), sg.Exit()]] window = sg.Window("處理系譜文件", layout) while True: event, values = window.Read() print(event, values) if event in (None, "Exit"): break if event == "Read": try: #f90Name = values["-IN-"] #print(f90Name) window("-OUTPUT-").update(values("-IN-")) except ValueError as e: print(e) window.close()
之前沒有加try,運行的時候直接報錯 invalid literal for int() with base 10: '-OUTPUT-' 加上try,打印出來,找原因,就加上賦值語句,這回報了一個我好像能看懂的語句: 'dict' object is not callable,分析一下打印的內容“Read {'-IN-': 'ASD'}” 仔細想了一下,原來是字典值的問題,對照原文發現,問題出現在“ window("-OUTPUT-").update(values("-IN-")) ”這句話上 ,嘗試着修改為下邊這段話,就跑通了
# -*- coding: utf-8 -*- """ Created on Sat Jul 17 18:06:18 2021 處理系譜文件 @author: 高雪峰 Alex GAO """ import PySimpleGUI as sg sg.theme("BluePurple") layout = [[sg.Text('請輸入F90整理的系譜文件名稱:'),sg.Text(size=(20,1),key = ('-OUTPUT-'))], [sg.Input(key = '-IN-')], [sg.Button('Read'), sg.Exit()]] window = sg.Window("處理系譜文件", layout) while True: event, values = window.Read() print(event, values) if event in (None, "Exit"): break if event == "Read": try: f90Name = values["-IN-"] #這里是字典值的問題 print(f90Name) window["-OUTPUT-"].update(values["-IN-"]) #這里是字典值的問題 except ValueError as e: print(e) window.close()
錄入數據
查看后台結果
得到的f90Name也是正確的。
分析起來主要是對字典操作的不熟悉造成的錯誤