python3.8的PySimpleGUI学习的温度转换(℃转℉)
一、代码1:
#导出模块 import PySimpleGUI as sg #总体布局,sg.InputText(),默认size=(45,1)。 layout = [ [sg.Text('Celcius(摄氏温度)'), sg.InputText(size=(15,1)),sg.Text('℃')], #第1行的3个布局 [sg.Submit()], #第2行 ] #定义窗口即标题 #window = sg.Window('Temperature Converter').Layout(layout) #方法一layout布局 window = sg.Window('Temperature Converter',layout) #方法二layout布局 #get value (part of a list) button, value = window.Read() #定义按钮 if button is None: exit(0) #convert and create string fahrenheit = round(9/5*float(value[0]) +32, 1) #公式,1为保留小数点后面1位 result = 'Temperature in Fahrenheit is(华氏温度是): ' + str(fahrenheit)+'℉' #定义 #display in Popup ,显示popup弹出框 sg.Popup('Result', result)
二、代码2:
#导出模块 import PySimpleGUI as sg #自定义颜色,有点麻烦,也可以默认主题色,或者设置总体主题色 sg.SetOptions (background_color = 'LightBlue', element_background_color = 'LightBlue', text_element_background_color = 'LightBlue', font = ('Arial', 10, 'bold'), text_color = 'Blue', input_text_color ='Blue', button_color = ('White', 'Blue') #按钮颜色,白色字,蓝色背景颜色 ) #总体布局 layout = [ [sg.Text('Celcius(摄氏温度:)', size =(18,1)), sg.InputText(size = (15,1)),sg.Text('℃')], [sg.Submit()] ] #定义窗口即标题 #window = sg.Window('Temperature Converter').Layout(layout) #方法一layout布局 window = sg.Window('Temperature Converter',layout) #方法二layout布局 #读出win的数值 button, value = window.Read() #定义按钮 if button is None: exit(0) #convert and create string fahrenheit = round(9/5*float(value[0]) +32, 1) #公式,1为保留小数点后面1位 result = 'Temperature in Fahrenheit is(华氏温度是): ' + str(fahrenheit)+'℉' #定义 #display in Popup ,显示popup弹出框 sg.Popup('Result', result)
三、代码3:
#导出模块 import PySimpleGUI as sg #自定义颜色 sg.SetOptions (background_color = 'LightBlue', element_background_color = 'LightBlue', text_element_background_color = 'LightBlue', font = ('Arial', 10, 'bold'), text_color = 'Blue', input_text_color ='Blue', button_color = ('White', 'Blue') ) #update (via list) values and and display answers #value[0] is celcius input, value[1] is input to place result. #Use ReadButton with while true: - keeps window open. #认识persistent form and bind key的学习 layout = [ [sg.Text('Enter a Temperature in Celcius')], [sg.Text('Celcius', size =(8,1)), sg.InputText(size = (15,1))], [sg.Text('Result', size =(8,1)), sg.InputText(size = (15,1))], [sg.ReadButton('Submit', bind_return_key = True)] ] #Return = button press window = sg.Window('Converter').Layout(layout) while True: #get result button, value = window.Read() #break out of loop is button not pressed. if button is not None: fahrenheit = round(9/5*float(value[0]) +32, 1) #put result in 2nd input box window.FindElement(1).Update(fahrenheit) else: break
四、代码4:
#导出模块 import PySimpleGUI as sg #自定义颜色 sg.SetOptions (background_color = 'LightBlue', element_background_color = 'LightBlue', text_element_background_color = 'LightBlue', font = ('Arial', 10, 'bold'), text_color = 'Blue', input_text_color ='Blue', button_color = ('White', 'Blue') ) #name inputs (key) uses dictionary- easy to see updating of results #value[input] first input value te c... #学习named input keys and catch errors layout = [ [sg.Text('Enter a Temperature in Celcius')], [sg.Text('Celcius', size =(8,1)), sg.InputText(size = (15,1),key = '_input_')], [sg.Text('Result', size =(8,1)), sg.InputText(size = (15,1),key = '_result_')], [sg.ReadButton('Submit', bind_return_key = True)] ] window = sg.FlexForm('Temp Converter').Layout(layout) while True: button, value = window.Read() if button is not None: #catch program errors for text or blank entry: try: fahrenheit = round(9/5*float(value['_input_']) +32, 1) #put result in text box window.FindElement('_result_').Update(fahrenheit) except ValueError: sg.Popup('Error','Please try again') else: break
五、代码5:
#导出模块 import PySimpleGUI as sg #个性化设置,可以不设置,那就是默认的银河灰 #Can use a variety of themes - plus individual options sg.ChangeLookAndFeel('SandyBeach') sg.SetOptions (font = ('Arial', 10, 'bold')) #布局 layout = [ [sg.Text('Enter a Temperature in Celcius')], #第1行 [sg.Text('Celcius', size =(8,1)), sg.InputText(size = (15,1),key = '_input_')], #第2行 [sg.Text('Result', size =(8,1)), sg.InputText(size = (15,1),key = '_result_')], #第3行 [sg.ReadButton('Submit', bind_return_key = True)] #第4行 ] #定义窗口的标题和布局 window = sg.Window('Temp Converter').Layout(layout) #循环设置 while True: button, value = window.Read() if button is not None: #catch program errors for text, floats or blank entry: #Also validation for range [0, 50],这是多指人体的温度范围,当然35℃都考虑低温了,很危险。 #input的key值的学习 #validation(验证) and look and feel的学习 try: if float(value['_input_']) > 50 or float(value['_input_']) <0: sg.Popup('Error','Out of range') else: fahrenheit = round(9/5*int(value['_input_']) +32, 1) window.FindElement('_result_').Update(fahrenheit) #FindElement和Update的学习 except ValueError: sg.Popup('Error','Please try again') else: break
总结:
这是一个温度转换的Python的代码,用PySimpleGUI编写,注意其中几个不同之处。
1.layout的布局学习及在Window中的方式。
2.自定义背景颜色和默认背景颜色。
3.FindElement和Update的学习。
4.input的key值的学习。
5.validation(验证) and look and feel的学习。