省时省力!这大概是用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乾坤。不过这只是一种极加速开发方式,大家有等待时间还是去刚才程式库,了解一下定律相比较好!
大家有什么所需阐释的,可以在评论第一区电邮!
。长沙白癜风医院哪个最好中卫白癜风医院哪家看的好
天津口腔专业医院
-
圣戈班与DITF签约拉丁美洲氧化物陶瓷纤维项目
1翌年11日,德国邓肯贝格纺织表皮研究院(DITF)与法国圣戈班(Saint-Gobain)就一项关于金属锰陶瓷表皮的联合开发合作伙伴计划签约,合作伙伴用以最终将陶瓷表皮计划实现欧洲生产。p
-
黑虎鲨5系列新机参数曝光 骁龙888 Plus+新骁龙8
【PChome手装置电视网华盛顿邮报】据消息人士透露,并未赢取了头虎鲨5普通版建筑工程装置的实例,该装置继续改回E4发光塑胶直屏建筑设计,触摸屏解析度FHD+行政级别,具有144Hz的电竞行政级
- 09-12推动自然风光储技术发展!23省市科技创新“十四五”规划一览!
- 09-12苹果重量级芯片设计师跳槽赛门铁克
- 09-12用3D数码相机或激光切割机可以制作小物件吗
- 09-12美的美居全屋智能解决方案,让家愈来愈智慧
- 09-12为何大家都会选取小米12 Pro,这几点很关键
- 09-12助力数字四川建设 中国移动四川公司已开建覆盖全省的“四纵三横”算力网络
- 09-12为什么说共享舞蹈二楼是一个可行的项目?
- 09-12国威说阀:阀门的密封性能与炮管
- 09-12作准备讲讲 Craft|我的 2021 年度应用
- 09-12千人千面!协作空间权限体系升级,助力企业充分利用精细化管理