省时省力!这大概是用Python写到GUI最快的方式了!
2025-09-12 12:19
command_history = []
history_offset = 0
while True:
event, value = window.read()
if event == 'SEND':
query = value['query'].rstrip()
# EXECUTE YOUR COMMAND HERE
print('The command you entered was {}'.format(query))
command_history.append(query)
history_offset = len(command_history)-1
# manually clear input because keyboard events blocks clear
window['query'].update('')
window['history'].update(''.join(command_history[-3:]))
elif event in (sg.WIN_CLOSED, 'EXIT'): # quit if exit event or X
break
elif 'Up' in event and len(command_history):
command = command_history[history_offset]
# decrement is not zero
history_offset -= 1 * (history_offset> 0)
window['query'].update(command)
elif 'Down' in event and len(command_history):
# increment up to end of list
history_offset += 1 * (history_offset
command = command_history[history_offset]
window['query'].update(command)
elif 'Escape' in event:
window['query'].update('')
ChatBotWithHistory()
调试一下,刚才视觉效果:
这是一个带历史记录的聊天该软件,如果你所需花钱一个值得注意的该软件的话,可以实际上镜像预定义,然后大大的删改一下。
接口大全我们便来看一个举例:
#!/usr/bin/env python
"""
Example of (almost) all Elements, that you can use in PySimpleGUI.
Shows you the basics including:
Naming convention for keys
Menubar format
Right click menu format
Table format
Running an async event loop
Theming your application (requires a window restart)
Displays the values dictionary entry for each element
And more!
Copyright 2021 PySimpleGUI
"""
import PySimpleGUI as sg
def make_window(theme):
sg.theme(theme)
menu_def = [['PriceApplication', ['EPricexit']],
['PriceHelp', ['PriceAbout']] ]
right_click_menu_def = [[], ['Nothing','More Nothing','Exit']]
# Table Data
data = [["John", 10], ["Jen", 5]]
headings = ["Name", "Score"]
input_layout = [[sg.Menu(menu_def, key='-MENU-')],
[sg.Text('Anything that requires user-input is in this tab!')],
[sg.Input(key='-INPUT-')],
[sg.Slider(orientation='h', key='-SKIDER-'),
sg.Image(data=sg.DEFAULT脚注LOADING_GIF, enable_events=True, key='-GIF-IMAGE-'),],
[sg.Checkbox('Checkbox', default=True, k='-CB-')],
[sg.Radio('Radio1', "RadioDemo", default=True, size=(10,1), k='-R1-'), sg.Radio('Radio2', "RadioDemo", default=True, size=(10,1), k='-R2-')],
[sg.Combo(values=('Combo 1', 'Combo 2', 'Combo 3'), default_value='Combo 1', readonly=True, k='-COMBO-'),
sg.OptionMenu(values=('Option 1', 'Option 2', 'Option 3'), k='-OPTION MENU-'),],
[sg.Spin([i for i in range(1,11)], initial_value=10, k='-SPIN-'), sg.Text('Spin')],
[sg.Multiline('Demo of a Multi-Line Text Element!Line 2Line 3Line 4Line 5Line 6Line 7You get the point.', size=(45,5), k='-MLINE-')],
[sg.Button('Button'), sg.Button('Popup'), sg.Button(image_data=sg.DEFAULT脚注ICON, key='-LOGO-')]]
asthetic_layout = [[sg.T('Anything that you would use for asthetics is in this tab!')],
[sg.Image(data=sg.DEFAULT脚注ICON, k='-IMAGE-')],
[sg.ProgressBar(1000, orientation='h', size=(20, 20), key='-PROGRESS BAR-'), sg.Button('Test Progress bar')]]
logging_layout = [[sg.Text("Anything printed will display here!")], [sg.Output(size=(60,15), font='Courier 8')]]
graphing_layout = [[sg.Text("Anything you would use to graph will display here!")],
[sg.Graph((200,200), (0,0),(200,200),background_color="black", key='-GRAPH-', enable_events=True)],
[sg.T('Click anywhere on graph to draw a circle')],
[sg.Table(values=data, headings=headings, max_col_width=25,
background_color='black',
auto_size_columns=True,
display_row_numbers=True,
justification='right',
num_rows=2,
alternating_row_color='black',
key='-TABLE-',
row_height=25)]]
specalty_layout = [[sg.Text("Any "special" elements will display here!")],
[sg.Button("Open Folder")],
[sg.Button("Open File")]]
theme_layout = [[sg.Text("See how elements look under different themes by choosing a different theme here!")],
[sg.Listbox(values = sg.theme_list(),
size =(20, 12),
key ='-THEME LISTBOX-',
enable_events = True)],
[sg.Button("Set Theme")]]
layout = [[sg.Text('Demo Of (Almost) All Elements', size=(38, 1), justification='center', font=("Helvetica", 16), relief=sg.RELIEF_RIDGE, k='-TEXT HEADING-', enable_events=True)]]
layout +=[[sg.TabGroup([[ sg.Tab('Input Elements', input_layout),
sg.Tab('Asthetic Elements', asthetic_layout),
sg.Tab('Graphing', graphing_layout),
sg.Tab('Specialty', specalty_layout),
sg.Tab('Theming', theme_layout),
sg.Tab('Output', logging_layout)]], key='-TAB GROUP-')]]
return sg.Window('All Elements Demo', layout, right_click_menu=right_click_menu_def)
def main():
window = make_window(sg.theme())
# This is an Event Loop
while True:
event, values = window.read(timeout=100)
# keep an animation running so show things are happening
window['-GIF-IMAGE-'].update_animation(sg.DEFAULT脚注LOADING_GIF, time_between_frames=100)
if event not in (sg.TIMEOUT_EVENT, sg.WIN_CLOSED):
print('============ Event = ', event, ' ==============')
print('源泉源泉-- Values Dictionary (key=value) 源泉源泉--')
for key in values:
print(key, ' = ',values[key])
if event in (None, 'Exit'):
print("[LOG] Clicked Exit!")
break
elif event == 'About':
print("[LOG] Clicked About!")
sg.popup('PySimpleGUI Demo All Elements',
'Right click anywhere to see right click menu',
'Visit each of the tabs to see available elements',
'Output of event and values can be see in Output tab',
'The event and values dictionary is printed after every event')
elif event == 'Popup':
print("[LOG] Clicked Popup Button!")
sg.popup("You pressed a button!")
print("[LOG] Dismissing Popup!")
elif event == 'Test Progress bar':
print("[LOG] Clicked Test Progress Bar!")
progress_bar = window['-PROGRESS BAR-']
for i in range(1000):
print("[LOG] Updating progress bar by 1 step ("+str(i)+")")
progress_bar.UpdateBar(i + 1)
print("[LOG] Progress bar complete!")
elif event == "-GRAPH-":
graph = window['-GRAPH-'] # type: sg.Graph
graph.draw_circle(values['-GRAPH-'], fill_color='yellow', radius=20)
print("[LOG] Circle drawn at: " + str(values['-GRAPH-']))
elif event == "Open Folder":
print("[LOG] Clicked Open Folder!")
folder_or_file = sg.popup_get_folder('Choose your folder')
sg.popup("You chose: " + str(folder_or_file))
print("[LOG] User chose folder: " + str(folder_or_file))
elif event == "Open File":
print("[LOG] Clicked Open File!")
folder_or_file = sg.popup_get_file('Choose your file')
sg.popup("You chose: " + str(folder_or_file))
print("[LOG] User chose file: " + str(folder_or_file))
elif event == "Set Theme":
print("[LOG] Clicked Set Theme!")
theme_chosen = values['-THEME LISTBOX-'][0]
print("[LOG] User Chose Theme: " + str(theme_chosen))
window.close()
window = make_window(theme_chosen)
window.close()
exit(0)
if 脚注name脚注 == '脚注main脚注':
main()
我们来刚才调试之后的视觉效果:
这个 demo 是 PySimpleGUI 所有接口的等价,每一个 tab 都是一个类群。这里包括进度条、画布、意念、滚动条等等。如果你想要回来界面接口,到这个 demo 的程式库里回来就对了。
揭示这里还有更多程序当中,大家就自己去冒险吧!这里主要是给大家介绍一个极加速开发 GUI 的步骤,俗称CV乾坤。不过这只是一种极加速开发方式,大家有等待时间还是去刚才程式库,了解一下定律相比较好!
大家有什么所需阐释的,可以在评论第一区电邮!
。长沙白癜风医院哪个最好中卫白癜风医院哪家看的好
天津口腔专业医院

-
投资者提问:请问公司产品在元宇宙概念中所处于地位和抑制作用?
融资提问:请问该公司产品在元宇宙定义中所位处地位和依赖性?董秘回答淡天马DSZ000050:您好,感谢您对天马该公司的瞩目。该公司年中加强前瞻性电子技术格局与产品电子技术开

-
日本人中看的“姓氏”
大家还知道长崎有哪些奇葩的“后裔赖”?欢迎在评论区电邮!我是“蜀左将军”,集中精力于历史文化科学普及音乐创作,欢迎大家点赞与关切!。a href="http:
- 10-28投资者提问:公司在LTPS笔记本业务方面有什么进展?有没有电竞笔记本需求量产出...
- 10-28投资者提问:请问一下贵公司今年车载显示该公司发展如何?公司车载客户有哪些?现...
- 10-28晋绥负伤倒地未死,两个汉奸发现后悄声附耳:别动,马上就走
- 10-28投资者提问:请问贵公司不一定在安徽省芜湖市投资的相关计划?在贵司的招聘信...
- 10-28投资者提问:董秘好!请麻烦告知截至12月末24日贵司股东人数有多少吗?谢谢。
- 10-28投资者提问:媒体漫天报道九安或得5亿订单。这个消息才会造成公司股价重大影响,...
- 10-28投资者提问:董秘,你好,请问九安是否已在美国上架宠物新冠快速检测盒?请正面...
- 10-28投资者提问:请问今天是否有交流会2021年12年初29号的,如果有在哪可以看...
- 10-28投资者回答:董秘你好,贵公司有生产冬季运动鞋产品吗
- 10-28投资者提问:董秘您好,有消息称,ihealth现阶段有一款针对宠物pet检测...