当前位置:首页 >> 互联网
互联网

省时省力!这大概是用Python写到GUI最快的方式了!

2025-09-12 12:19

king in user input and using it 源泉 #

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乾坤。不过这只是一种极加速开发方式,大家有等待时间还是去刚才程式库,了解一下定律相比较好!

大家有什么所需阐释的,可以在评论第一区电邮!

长沙白癜风医院哪个最好
中卫白癜风医院哪家看的好
天津口腔专业医院

上一篇: LOL观赛体验哪家强,多位明星运动员加入OB观赛团,B站是个好选择

下一篇: 小米12能与苹果过关斩将?

相关阅读
圣戈班与DITF签约拉丁美洲氧化物陶瓷纤维项目

1翌年11日,德国邓肯贝格纺织表皮研究院(DITF)与法国圣戈班(Saint-Gobain)就一项关于金属锰陶瓷表皮的联合开发合作伙伴计划签约,合作伙伴用以最终将陶瓷表皮计划实现欧洲生产。p

黑虎鲨5系列新机参数曝光 骁龙888 Plus+新骁龙8

【PChome手装置电视网华盛顿邮报】据消息人士透露,并未赢取了头虎鲨5普通版建筑工程装置的实例,该装置继续改回E4发光塑胶直屏建筑设计,触摸屏解析度FHD+行政级别,具有144Hz的电竞行政级

友情链接