PySimpleGUI 中文手册(常用部分)
window
window = sg.Window("Windows-like program",layout)window.disappear() # 窗口隐藏
window.reappear() # 窗口展示
window = sg.Window('My window with tabs', layout, font=("宋体",15),default_element_size=(50,1))
# 字体为宋体,大小5默认窗口大小为50宽1高
可用控件列表
使用方法:直接sg.Text()
即可
- Text # 文本
- InputText # 单行输入框
- Button # 按钮
- FileBrowse # 文件选择,选择多个文件FilesBrowse,保存文件FileSaveAs
- FolderBrowse # 文件夹选择
- CalendarButton # 日历选择,必须输入按钮名如
'choose date'
,返回字符串 - ColorChooser # 颜色选择,如sg.ColorChooserButton(‘颜色选择’),返回RGB元组
- Combo # 下拉选择菜单,如sg.Combo([‘choice 1’, ‘choice 2’])
- Checkbox # 复选框。如sg.Checkbox(‘My first Checkbox!’, default=True), sg.Checkbox(‘My second Checkbox!’),返回布尔值
- Radio # 单选按钮,如sg.Radio(‘My first Radio!’, “RADIO1”, default=True),sg.Radio(‘My second radio!’, “RADIO1”),第一个是显示的字符,第二个是单选按钮所在组,只有在同一组的单选按钮才有排他性,第三个是默认选中,返回布尔值True or False
- Listbox # 列表框,如sg.Listbox(values=[‘Listbox 1’, ‘Listbox 2’, ‘Listbox 3’]
- Slider # 滚动条,如sg.Slider(range=(1,500),default_value=222,orientation=’horizontal’),垂直是vertical
- Multiline # 多行输入框
- Multi-line Text Output (not on tkinter version)
- Spin # 一个可以上下调节的控件,像一个简化版的滚动条?如sg.Spin([i for i in range(1,11)], initial_value=1)
- ProgressBar # 进度条,下面是一个使用案例:
layout =[[sg.Text('A custom progress meter')],[sg.ProgressBar(1000, orientation='h', size=(20,20), key='progressbar')],
[sg.Cancel()]]
window = sg.Window('Custom Progress Meter', layout)
progress_bar = window['progressbar']
# loop that would normally do something useful
for i inrange(1000):
# check to see if the cancel button was clicked and exit loop if clicked
event, values = window.read(timeout=10)
if event =='Cancel' or event is None:
break
# update bar with loop value +1 so that bar eventually reaches the maximum
progress_bar.UpdateBar(i +1)
# done with loop... need to destroy the window as it's still open
window.close()
- Menu # 菜单
- ButtonMenu # 菜单按钮
menu_def =[['File',['Open','Save','Exit']],['Edit',['Paste',['Special','Normal',],'Undo'],]]
# 定义布局
layout =[[sg.Menu(menu_def, tearoff=False, pad=(20,1))],
[sg.ButtonMenu('ButtonMenu',key='-BMENU-', menu_def=menu_def[0])],]
window = sg.Window('My window with tabs', layout)
- Frame # 框,如下面的代码:
sg.Frame(layout=[[sg.Checkbox('Checkbox', size=(10,1)), sg.Checkbox('My second checkbox!',default=True)],
[sg.Radio('My first Radio!',"RADIO1",default=True, size=(10,1)), sg.Radio('My second Radio!',"RADIO1")]],
title='Options',title_color='red', relief=sg.RELIEF_SUNKEN, tooltip='Use these to set flags')]
- Image # 图片查看,只支持png,gif格式,如sg.Image(r’C:\PySimpleGUI\Logos\PySimpleGUI_Logo_320.png’),不知道为什么我运行这个函数总会有各种问题……
- TabGroup # 选项卡
tab1_layout =[[sg.T('This is inside tab 1')]]tab2_layout =[[sg.T('This is inside tab 2')],
[sg.In(key='in')]]
layout =[[sg.TabGroup([[sg.Tab('Tab 1', tab1_layout), sg.Tab('Tab 2', tab2_layout)]])],
[sg.Button('Read')]]
window = sg.Window('My window with tabs', layout)
- Output # 输出框,可以使用print()直接打印,下面是一个例子:
def ChatBot(): layout =[[(sg.Text('This is where standard out is being routed', size=[40,1]))],
[sg.Output(size=(80,20))],
[sg.Multiline(size=(70,5), enter_submits=True),
sg.Button('SEND', button_color=(sg.YELLOWS[0], sg.BLUES[0])),
sg.Button('EXIT', button_color=(sg.YELLOWS[0], sg.GREENS[0]))]]
window = sg.Window('Chat Window', layout, default_element_size=(30,2))
# ---===--- Loop taking in user input and using it to query HowDoI web oracle --- #
while True:
event, value = window.read()
if event =='SEND':
print(value)
else:
break
window.close()
ChatBot()
基本可用参数:
key
,指定键名size=(8,6)
,控件大小font = ('宋体',15)
,字体,前者是字体类型,后者是字体大小enable_events
,是否触发事件justification='center'
,居中
内置Button
虽然官方列了很多内置Button,但是测试下来似乎并没有什么特殊效果,只是多了可以直接使用的Button罢了
- OK
- Ok
- Submit
- Cancel
- Yes
- No
- Exit
- Quit
- Help
- Save
- SaveAs
- Open
比如说,你可以直接sg.OK()
,也可以sg.Button('OK')
target参数
选择器型控件,如FileBrowse,FilesBrowse,FolderBrowse,FileSaveAs,CalendarButton,ColorChooserButton,会传递选择值给窗口上的另外一个控件,可以是Text
,InputText
或它本身。比如它与输入框在同一行时会传地址给输入框,如[sg.InputText(),sg.FolderBrowse()]
,可以为输入框加一个visible=False
参数隐藏(是隐藏整个输入框)。
那么我想让值传递给指定控件,可以加一个target
参数,如:
layout =[[sg.T('Source Folder')],[sg.In(key='input')],
[sg.FolderBrowse(key='_BUTTON_KEY_',target='input'), sg.OK()]]
这样选择的值就会传递给相同key的控件
注意,使用此参数时,就无法获取选择器控件的值了,比如说上面的例子,你就无法
print(values['_BUTTON_KEY_'])
popup
popup
简单来说,popup就是一个弹出窗口,执行该函数时,会停止执行当前窗口,直到用户关闭弹出窗口时才会重新执行。
可以输入任意数量的参数,都会转化为字符串并输出。
拥有以下类型的popup:
sg.popup('Popup') # Shows OK buttonsg.popup_ok('PopupOk') # Shows OK button
sg.popup_yes_no('PopupYesNo') # Shows Yes and No buttons
sg.popup_cancel('PopupCancel') # Shows Cancelled button
sg.popup_ok_cancel('PopupOKCancel') # Shows OK and Cancel buttons
sg.popup_error('PopupError') # Shows red error button
sg.popup_timed('PopupTimed') # Automatically closes
sg.popup_auto_close('PopupAutoClose') # Same as PopupTimed
比如popup_ok
是一个带有ok按钮的弹出窗口,popup_timed
是一个过一段时间自动关掉的弹出窗口。
popup
中可以输入的参数,自行help(sg.popup)
,需要注意的一点是因为popup会把所有输入的参数都当做字符串输出,所以特殊的参数需要标识出来,比如sg.popup('values[0],values[1],title="test"')
popup_scrolled
还有一类特殊的popup,即Scrolled Output
,它展示的是带有滚动条的弹出窗口,适用于展示大量信息时,函数名为sg.popup_scrolled()
。
popup_scrolled会自动调整大小,如果想自定义的话,可以sg.popup_scrolled(my_text, size=(80, None))
上述代码会展示一个宽度为80字符,高度随输出字符串变化的弹出窗口。
效果
popup_get_file
获取一个或多个文件地址
# 例子:text = sg.popup_get_file('Please enter a file name')
效果:
特殊参数:
save_as=False
,是否显示保存按钮,multiple_files=False
是否允许选择多个文件,no_window=False
是否跳过弹出窗口直接显示系统打开文件界面?
popup_get_folder
即获取文件夹路径
注意,该函数没有save_as=False
与multiple_files=False
参数,但是有no_window=False
主题theme
theme_name_list = sg.theme_list() # 获取所有可用主题,返回一个列表sg.theme_previewer() # 在layout中添加此函数,运行时会展示所有主题的预览
下面代码创造了一个主题浏览器,可以用下拉餐单切换预览所有主题
sg.theme('Dark Brown')layout =[[sg.Text('Theme Browser')],
[sg.Text('Click a Theme color to see demo window')],
[sg.Listbox(values=sg.theme_list(), size=(20,12), key='-LIST-', enable_events=True)],
[sg.Button('Exit')]]
window = sg.Window('Theme Browser', layout)
while True: # Event Loop
event, values = window.read()
if event in(None,'Exit'):
break
sg.theme(values['-LIST-'][0])
sg.popup_get_text('This is {}'.format(values['-LIST-'][0]))
window.close()
以上是 PySimpleGUI 中文手册(常用部分) 的全部内容, 来源链接: utcz.com/p/217326.html