最近在写一些处理芯片数据的代码,想给小伙伴们用,就想到写个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也是正确的。
分析起来主要是对字典操作的不熟悉造成的错误