提交 4ac21ba5 编写于 作者: cxxu1375's avatar cxxu1375

client has multiple tags

上级 c6eaf594
...@@ -5,10 +5,23 @@ from joblib import load ...@@ -5,10 +5,23 @@ from joblib import load
from audio.core import get_used_keys from audio.core import get_used_keys
from audio.graph import showFreqGraph, showMelFreqGraph, showWaveForm from audio.graph import showFreqGraph, showMelFreqGraph, showWaveForm
from config.EF import ava_algorithms, ava_emotions, ava_features from config.EF import ava_algorithms, ava_emotions, ava_features
from config.MetaPath import (ava_dbs, bclf, brgr, emodb, from config.MetaPath import (
get_example_audio_file, ravdess, savee) ava_dbs,
bclf,
brgr,
emodb,
get_example_audio_file,
ravdess,
savee,
)
from recognizer.basic import EmotionRecognizer from recognizer.basic import EmotionRecognizer
from recognizer.deep import DeepEmotionRecognizer from recognizer.deep import DeepEmotionRecognizer
import sys
def import_config_bookmark():
pass
## ##
...@@ -35,16 +48,79 @@ def get_algos_elements_list(): ...@@ -35,16 +48,79 @@ def get_algos_elements_list():
return algos_radios return algos_radios
def create_border_frame(result="inputYourContentToHighligt", key="border"):
"""创建一个带边框的布局窗口
Parameters
----------
key : str, optional
_description_, by default "border"
examples:
-
# 创建一个使用border_frame的布局
demo_border_layout = [
[sg.Text("Enter a number:"), sg.Input(key="-NUMBER-")],
[sg.Button("Calculate"), sg.Button("Exit")],
[create_border_frame(**kwargs)]
]
Returns
-------
layout
"""
# 创建一个带边框区域
res_layout = [
[sg.Text(f"{result}", font=("Helvetica", 24,"bold"),background_color="green",text_color="red",key=f"{key}")],
[sg.HorizontalSeparator()],
# [sg.Text("Result: "), sg.Text("", size=(20, 1),)]
]
frame = sg.Frame(
"Result Area",
res_layout,
relief=sg.RELIEF_SUNKEN,
border_width=2,
)
return frame
## ##
# ---create the window--- # ---create the window---
def make_window(size=None): def make_window(theme=None, size=None):
if theme:
sg.theme(theme)
menu_def = [["&Application", ["E&xit"]], ["&Help", ["&About"]]]
# 据我观察,通常布局的类型为list[list[element]],也就是说,是一个关于sg组件元素的二轴数组布局,不妨称之为基础布局 # 据我观察,通常布局的类型为list[list[element]],也就是说,是一个关于sg组件元素的二轴数组布局,不妨称之为基础布局
# 并且,若我们将排放在同一行的元素,(称他们为一个元素序列),元素序列的包含sg.<element>个数可以是>=1的 # 并且,若我们将排放在同一行的元素,(称他们为一个元素序列),元素序列的包含sg.<element>个数可以是>=1的
# 从这个角度理解,那么布局可以理解为`元素序列`按照shape=(-1,1)的形状排放 # 从这个角度理解,那么布局可以理解为`元素序列`按照shape=(-1,1)的形状排放
# 尽管有这样的嵌套约束,但是PySimpleGui提供了一些用于嵌套的组件,例如sg.Column # 尽管有这样的嵌套约束,但是PySimpleGui提供了一些用于嵌套的组件,例如sg.Column
# 我们可以基础布局作为Column组件的参数,然后我可以将Column作为组件放到一个新的基础组件中,这样就好像嵌套一个更深的层布局 # 我们可以基础布局作为Column组件的参数,然后我可以将Column作为组件放到一个新的基础组件中,这样就好像嵌套一个更深的层布局
# 在实践中,比较少用过度变量,但是用来作为划分(设计)用途还是不错的,甚至设计完毕后可以销毁这些临时子布局变量 # 在实践中,比较少用过度变量,但是用来作为划分(设计)用途还是不错的,甚至设计完毕后可以销毁这些临时子布局变量
# ---choose theme---
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")],
]
# ---create 2 column layout--- # ---create 2 column layout---
# ---column left---
db_choose_layout = [ db_choose_layout = [
[sg.Text("Select the training database")], [sg.Text("Select the training database")],
[sg.Combo(ava_dbs, key="train_db", default_value=emodb)], [sg.Combo(ava_dbs, key="train_db", default_value=emodb)],
...@@ -57,10 +133,12 @@ def make_window(size=None): ...@@ -57,10 +133,12 @@ def make_window(size=None):
e_config_layout = [ e_config_layout = [
[ [
sg.Text("choose the emotion config:"), sg.Text("choose the emotion config:"),
],
[
sg.Text( sg.Text(
"请选择一个情感组合进行试验:推荐组合AS,HNS,AHNS,AHNPS\n\ "请选择一个情感组合进行试验:推荐组合AS,HNS,AHNS,AHNPS\n\
注意,savee库种的`surprise`和`pleasantSurprise`)有一定区别,所以AHNPS组合不推荐用于savee上" 注意,savee库种的`surprise`和`pleasantSurprise`)有一定区别,\n所以AHNPS组合不推荐用于savee上"
), )
], ],
[ [
sg.Checkbox("angry", key="angry", default=True), sg.Checkbox("angry", key="angry", default=True),
...@@ -84,7 +162,7 @@ def make_window(size=None): ...@@ -84,7 +162,7 @@ def make_window(size=None):
], ],
[sg.Button("OK2"), sg.Button("Cancel")], [sg.Button("OK2"), sg.Button("Cancel")],
] ]
# ---column right---
algos = get_algos_elements_list() algos = get_algos_elements_list()
len_of_algos = len(algos) len_of_algos = len(algos)
algos_layout = [ algos_layout = [
...@@ -112,7 +190,8 @@ def make_window(size=None): ...@@ -112,7 +190,8 @@ def make_window(size=None):
emotion_recognition_layout = [ emotion_recognition_layout = [
[sg.Text("识别该语音文件的情感")], [sg.Text("识别该语音文件的情感")],
[sg.B("OK5")], [sg.B("OK5")],
[sg.Text(f"识别结果:{re_result}", key="emotion_recognition_res")], # [sg.Text(f"识别结果:{re_result}", key="emotion_recognition_res")],
[create_border_frame(result=re_result, key="emotion_recognition_res")],
] ]
draw_layout = [ draw_layout = [
...@@ -125,28 +204,131 @@ def make_window(size=None): ...@@ -125,28 +204,131 @@ def make_window(size=None):
], ],
[sg.Button("OK6"), sg.Button("Cancel")], [sg.Button("OK6"), sg.Button("Cancel")],
] ]
# ---辅助信息---
ML_KEY = "-ML-" # Multline's key
__version__ = "1.1"
right_info_layout = [
[
sg.Multiline(
size=(70, 21),
write_only=True,
# expand_x=True,
expand_y=True,
key=ML_KEY,
reroute_stdout=True,
echo_stdout_stderr=True,
reroute_cprint=True,
)
],
[sg.T("CCSER Client By Cxxu_zjgsu " + __version__)],
[
sg.T(
"PySimpleGUI ver "
+ sg.version.split(" ")[0]
+ " tkinter ver "
+ sg.tclversion_detailed,
font="Default 8",
pad=(0, 0),
)
],
[sg.T("Python ver " + sys.version, font="Default 8", pad=(0, 0))],
[
sg.T(
"Interpreter " + sg.execute_py_get_interpreter(),
font="Default 8",
pad=(0, 0),
)
],
]
# output tab
logging_layout = [
[sg.Text("Anything printed will display here!")],
[
sg.Multiline(
size=(60, 15),
font="Courier 8",
# expand_x=True,
# expand_y=True,
write_only=True,
reroute_stdout=True,
reroute_stderr=True,
echo_stdout_stderr=True,
autoscroll=True,
auto_refresh=True,
)
]
]
settings_layout = [
[sg.Text("Settings")],
]+theme_layout
# ---column divide--- # ---column divide---
column_left = db_choose_layout + e_config_layout + f_config_layout column_left = db_choose_layout + e_config_layout + f_config_layout
column_right = ( column_right = (
algos_layout + file_choose_layout + emotion_recognition_layout + draw_layout algos_layout
+ file_choose_layout
+ emotion_recognition_layout
+ draw_layout
+ right_info_layout
) )
column_left_layout = sg.Column(column_left, expand_x=True, expand_y=True) column_left_layout = sg.Column(
column_right_layout = sg.Column(column_right, expand_x=True, expand_y=True) column_left, expand_x=True, expand_y=True, element_justification="l"
)
# ----full layout---- column_right_layout = sg.Column(
layout = [ column_right, expand_x=True, expand_y=True, element_justification="c"
[ )
sg.Pane(
main_pane = sg.Pane(
[column_left_layout, column_right_layout], [column_left_layout, column_right_layout],
orientation="h", orientation="h",
expand_x=True, expand_x=True,
expand_y=True, expand_y=True,
k="-PANE-", k="-PANE-",
) )
main_tab_layout = [
[
sg.Text(
"Welcome to experience with CCSER Client!",
size=(45, 1),
justification="center",
font=("Helvetica", 16),
relief=sg.RELIEF_RIDGE,
k="-TEXT HEADING-",
enable_events=True,
)
],
[
main_pane
], ],
[sg.B("Quit")], [sg.B("Quit")],
] ]
# ----full layout----
#--top Menu bar---
Menubar_layout=[[sg.MenubarCustom(menu_def, key="-MENU-", font="Courier 15", tearoff=True)]]
# ---tabs---
tabs_layout=[
[
sg.TabGroup(
[
[
sg.Tab("Input Elements", main_tab_layout),
sg.Tab("Output", logging_layout),
sg.Tab("Settings",settings_layout)
]
],
key="-TAB GROUP-",
expand_x=True,
expand_y=True,
),
]
]
layout = Menubar_layout+tabs_layout
# ---create window # ---create window
window = sg.Window( window = sg.Window(
title="ccser_client", title="ccser_client",
...@@ -158,11 +340,11 @@ def make_window(size=None): ...@@ -158,11 +340,11 @@ def make_window(size=None):
return window return window
audio_selected="" audio_selected = ""
def main():
window = make_window(size) def main():
window = make_window(size=size)
# Initialize the selected databases list # Initialize the selected databases list
# 语料库的选择 # 语料库的选择
...@@ -296,15 +478,16 @@ def main(): ...@@ -296,15 +478,16 @@ def main():
window.close() window.close()
def recognize(window, train_db, test_db, e_config, f_config, algorithm, audio_selected): def recognize(window, train_db, test_db, e_config, f_config, algorithm, audio_selected):
print("开始识别..") print("开始识别..")
bclf = load(bclf) bclf_estimators = load(bclf)
# audio_selected=get_example_audio_file() # audio_selected=get_example_audio_file()
# None表示自动计算best_ML_model # None表示自动计算best_ML_model
ML_estimators = { ML_estimators = {
estimator.__class__.__name__: estimator for estimator, _, _ in bclf estimator.__class__.__name__: estimator for estimator, _, _ in bclf_estimators
} }
ML_estimators["BEST_ML_MODEL"] = None ML_estimators["BEST_ML_MODEL"] = None
# if algorithm=='BEST_ML_MODEL': # if algorithm=='BEST_ML_MODEL':
...@@ -335,5 +518,6 @@ def recognize(window, train_db, test_db, e_config, f_config, algorithm, audio_se ...@@ -335,5 +518,6 @@ def recognize(window, train_db, test_db, e_config, f_config, algorithm, audio_se
print(f"{re_result=}") print(f"{re_result=}")
window["emotion_recognition_res"].update(f"{re_result}") window["emotion_recognition_res"].update(f"{re_result}")
if __name__=="__main__":
if __name__ == "__main__":
main() main()
...@@ -416,5 +416,34 @@ if __name__ == "__main__": ...@@ -416,5 +416,34 @@ if __name__ == "__main__":
# demo_event_value() # demo_event_value()
# demoCombo() # demoCombo()
# radio_choose_demo() # radio_choose_demo()
demo_finalize() # demo_finalize()
pass
import PySimpleGUI as sg
# 创建一个带边框区域
frame_layout = [[sg.Text("Important Result", font=("Helvetica", 14))],
[sg.HorizontalSeparator()],
[sg.Text("Result: "), sg.Text("", size=(20, 1), key="-RESULT-")]]
frame = sg.Frame("Result Area", frame_layout, relief=sg.RELIEF_SUNKEN, border_width=2)
# 创建一个GUI窗口
layout = [[sg.Text("Enter a number:"), sg.Input(key="-NUMBER-")],
[sg.Button("Calculate"), sg.Button("Exit")],
[frame]]
window = sg.Window("My GUI", layout)
# 进入事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED or event == "Exit":
break
elif event == "Calculate":
number = int(values["-NUMBER-"])
result = number ** 2
window["-RESULT-"].update(str(result))
# 关闭窗口并退出程序
window.close()
##
""" """
Example of (almost) all Elements, that you can use in PySimpleGUI. Example of (almost) all Elements, that you can use in PySimpleGUI.
Shows you the basics including: Shows you the basics including:
...@@ -15,147 +16,276 @@ ...@@ -15,147 +16,276 @@
import PySimpleGUI as sg import PySimpleGUI as sg
def make_window(theme): def make_window(theme):
sg.theme(theme) sg.theme(theme)
menu_def = [['&Application', ['E&xit']], menu_def = [["&Application", ["E&xit"]], ["&Help", ["&About"]]]
['&Help', ['&About']] ] right_click_menu_def = [
right_click_menu_def = [[], ['Edit Me', 'Versions', 'Nothing','More Nothing','Exit']] [],
graph_right_click_menu_def = [[], ['Erase','Draw Line', 'Draw',['Circle', 'Rectangle', 'Image'], 'Exit']] ["Edit Me", "Versions", "Nothing", "More Nothing", "Exit"],
]
graph_right_click_menu_def = [
[],
["Erase", "Draw Line", "Draw", ["Circle", "Rectangle", "Image"], "Exit"],
]
# Table Data # Table Data
data = [["John", 10], ["Jen", 5]] data = [["John", 10], ["Jen", 5]]
headings = ["Name", "Score"] headings = ["Name", "Score"]
input_layout = [ input_layout = [
# [sg.Menu(menu_def, key='-MENU-')],
# [sg.Menu(menu_def, key='-MENU-')], [sg.Text("Anything that requires user-input is in this tab!")],
[sg.Text('Anything that requires user-input is in this tab!')], [sg.Input(key="-INPUT-")],
[sg.Input(key='-INPUT-')], [
[sg.Slider(orientation='h', key='-SKIDER-'), sg.Slider(orientation="h", key="-SKIDER-"),
sg.Image(data=sg.DEFAULT_BASE64_LOADING_GIF, enable_events=True, key='-GIF-IMAGE-'),], sg.Image(
[sg.Checkbox('Checkbox', default=True, k='-CB-')], data=sg.DEFAULT_BASE64_LOADING_GIF,
[sg.Radio('Radio1', "RadioDemo", default=True, size=(10,1), k='-R1-'), sg.Radio('Radio2', "RadioDemo", default=True, size=(10,1), k='-R2-')], enable_events=True,
[sg.Combo(values=('Combo 1', 'Combo 2', 'Combo 3'), default_value='Combo 1', readonly=False, k='-COMBO-'), key="-GIF-IMAGE-",
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!\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nYou get the point.', size=(45,5), expand_x=True, expand_y=True, k='-MLINE-')], [sg.Checkbox("Checkbox", default=True, k="-CB-")],
[sg.Button('Button'), sg.Button('Popup'), sg.Button(image_data=sg.DEFAULT_BASE64_ICON, key='-LOGO-')]] [
sg.Radio("Radio1", "RadioDemo", default=True, size=(10, 1), k="-R1-"),
asthetic_layout = [[sg.T('Anything that you would use for asthetics is in this tab!')], sg.Radio("Radio2", "RadioDemo", default=True, size=(10, 1), k="-R2-"),
[sg.Image(data=sg.DEFAULT_BASE64_ICON, k='-IMAGE-')], ],
[sg.ProgressBar(100, orientation='h', size=(20, 20), key='-PROGRESS BAR-'), sg.Button('Test Progress bar')]] [
sg.Combo(
logging_layout = [[sg.Text("Anything printed will display here!")], values=("Combo 1", "Combo 2", "Combo 3"),
[sg.Multiline(size=(60,15), font='Courier 8', expand_x=True, expand_y=True, write_only=True, default_value="Combo 1",
reroute_stdout=True, reroute_stderr=True, echo_stdout_stderr=True, autoscroll=True, auto_refresh=True)] readonly=False,
# [sg.Output(size=(60,15), font='Courier 8', expand_x=True, expand_y=True)] k="-COMBO-",
] ),
sg.OptionMenu(
graphing_layout = [[sg.Text("Anything you would use to graph will display here!")], values=("Option 1", "Option 2", "Option 3"), k="-OPTION MENU-"
[sg.Graph((200,200), (0,0),(200,200),background_color="black", key='-GRAPH-', enable_events=True, ),
right_click_menu=graph_right_click_menu_def)], ],
[sg.T('Click anywhere on graph to draw a circle')], [
[sg.Table(values=data, headings=headings, max_col_width=25, sg.Spin([i for i in range(1, 11)], initial_value=10, k="-SPIN-"),
background_color='black', sg.Text("Spin"),
auto_size_columns=True, ],
display_row_numbers=True, [
justification='right', sg.Multiline(
num_rows=2, "Demo of a Multi-Line Text Element!\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nYou get the point.",
alternating_row_color='black', size=(45, 5),
key='-TABLE-', expand_x=True,
row_height=25)]] expand_y=True,
k="-MLINE-",
popup_layout = [[sg.Text("Popup Testing")], )
[sg.Button("Open Folder")], ],
[sg.Button("Open File")]] [
sg.Button("Button"),
theme_layout = [[sg.Text("See how elements look under different themes by choosing a different theme here!")], sg.Button("Popup"),
[sg.Listbox(values = sg.theme_list(), sg.Button(image_data=sg.DEFAULT_BASE64_ICON, key="-LOGO-"),
size =(20, 12), ],
key ='-THEME LISTBOX-', ]
enable_events = True)],
[sg.Button("Set Theme")]] asthetic_layout = [
[sg.T("Anything that you would use for asthetics is in this tab!")],
layout = [ [sg.MenubarCustom(menu_def, key='-MENU-', font='Courier 15', tearoff=True)], [sg.Image(data=sg.DEFAULT_BASE64_ICON, k="-IMAGE-")],
[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.ProgressBar(100, orientation="h", size=(20, 20), key="-PROGRESS BAR-"),
sg.Tab('Asthetic Elements', asthetic_layout), sg.Button("Test Progress bar"),
sg.Tab('Graphing', graphing_layout), ],
sg.Tab('Popups', popup_layout), ]
sg.Tab('Theming', theme_layout), # output tab
sg.Tab('Output', logging_layout)]], key='-TAB GROUP-', expand_x=True, expand_y=True), logging_layout = [
[sg.Text("Anything printed will display here!")],
]] [
sg.Multiline(
size=(60, 15),
font="Courier 8",
expand_x=True,
expand_y=True,
write_only=True,
reroute_stdout=True,
reroute_stderr=True,
echo_stdout_stderr=True,
autoscroll=True,
auto_refresh=True,
)
]
# [sg.Output(size=(60,15), font='Courier 8', expand_x=True, expand_y=True)]
]
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,
right_click_menu=graph_right_click_menu_def,
)
],
[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,
)
],
]
popup_layout = [
[sg.Text("Popup Testing")],
[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.MenubarCustom(menu_def, key="-MENU-", font="Courier 15", tearoff=True)],
[
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("Popups", popup_layout),
sg.Tab("Theming", theme_layout),
sg.Tab("Output", logging_layout),
]
],
key="-TAB GROUP-",
expand_x=True,
expand_y=True,
),
]
]
layout[-1].append(sg.Sizegrip()) layout[-1].append(sg.Sizegrip())
window = sg.Window('All Elements Demo', layout, right_click_menu=right_click_menu_def, right_click_menu_tearoff=True, grab_anywhere=True, resizable=True, margins=(0,0), use_custom_titlebar=True, finalize=True, keep_on_top=True) window = sg.Window(
"All Elements Demo",
layout,
right_click_menu=right_click_menu_def,
right_click_menu_tearoff=True,
grab_anywhere=True,
resizable=True,
margins=(0, 0),
use_custom_titlebar=True,
finalize=True,
keep_on_top=True,
)
window.set_min_size(window.size) window.set_min_size(window.size)
return window return window
def main(): def main():
window = make_window(sg.theme()) window = make_window(sg.theme())
# This is an Event Loop # This is an Event Loop
while True: while True:
event, values = window.read(timeout=100) event, values = window.read(timeout=100)
# keep an animation running so show things are happening # keep an animation running so show things are happening
window['-GIF-IMAGE-'].update_animation(sg.DEFAULT_BASE64_LOADING_GIF, time_between_frames=100) window["-GIF-IMAGE-"].update_animation(
sg.DEFAULT_BASE64_LOADING_GIF, time_between_frames=100
)
if event not in (sg.TIMEOUT_EVENT, sg.WIN_CLOSED): if event not in (sg.TIMEOUT_EVENT, sg.WIN_CLOSED):
print('============ Event = ', event, ' ==============') print("============ Event = ", event, " ==============")
print('-------- Values Dictionary (key=value) --------') print("-------- Values Dictionary (key=value) --------")
for key in values: for key in values:
print(key, ' = ',values[key]) print(key, " = ", values[key])
if event in (None, 'Exit'): if event in (None, "Exit"):
print("[LOG] Clicked Exit!") print("[LOG] Clicked Exit!")
break break
elif event == 'About': elif event == "About":
print("[LOG] Clicked About!") print("[LOG] Clicked About!")
sg.popup('PySimpleGUI Demo All Elements', sg.popup(
'Right click anywhere to see right click menu', "PySimpleGUI Demo All Elements",
'Visit each of the tabs to see available elements', "Right click anywhere to see right click menu",
'Output of event and values can be see in Output tab', "Visit each of the tabs to see available elements",
'The event and values dictionary is printed after every event', keep_on_top=True) "Output of event and values can be see in Output tab",
elif event == 'Popup': "The event and values dictionary is printed after every event",
keep_on_top=True,
)
elif event == "Popup":
print("[LOG] Clicked Popup Button!") print("[LOG] Clicked Popup Button!")
sg.popup("You pressed a button!", keep_on_top=True) sg.popup("You pressed a button!", keep_on_top=True)
print("[LOG] Dismissing Popup!") print("[LOG] Dismissing Popup!")
elif event == 'Test Progress bar': elif event == "Test Progress bar":
print("[LOG] Clicked Test Progress Bar!") print("[LOG] Clicked Test Progress Bar!")
progress_bar = window['-PROGRESS BAR-'] progress_bar = window["-PROGRESS BAR-"]
for i in range(100): for i in range(100):
print("[LOG] Updating progress bar by 1 step ("+str(i)+")") print("[LOG] Updating progress bar by 1 step (" + str(i) + ")")
progress_bar.update(current_count=i + 1) progress_bar.update(current_count=i + 1)
print("[LOG] Progress bar complete!") print("[LOG] Progress bar complete!")
elif event == "-GRAPH-": elif event == "-GRAPH-":
graph = window['-GRAPH-'] # type: sg.Graph graph = window["-GRAPH-"] # type: sg.Graph
graph.draw_circle(values['-GRAPH-'], fill_color='yellow', radius=20) graph.draw_circle(values["-GRAPH-"], fill_color="yellow", radius=20)
print("[LOG] Circle drawn at: " + str(values['-GRAPH-'])) print("[LOG] Circle drawn at: " + str(values["-GRAPH-"]))
elif event == "Open Folder": elif event == "Open Folder":
print("[LOG] Clicked Open Folder!") print("[LOG] Clicked Open Folder!")
folder_or_file = sg.popup_get_folder('Choose your folder', keep_on_top=True) folder_or_file = sg.popup_get_folder("Choose your folder", keep_on_top=True)
sg.popup("You chose: " + str(folder_or_file), keep_on_top=True) sg.popup("You chose: " + str(folder_or_file), keep_on_top=True)
print("[LOG] User chose folder: " + str(folder_or_file)) print("[LOG] User chose folder: " + str(folder_or_file))
elif event == "Open File": elif event == "Open File":
print("[LOG] Clicked Open File!") print("[LOG] Clicked Open File!")
folder_or_file = sg.popup_get_file('Choose your file', keep_on_top=True) folder_or_file = sg.popup_get_file("Choose your file", keep_on_top=True)
sg.popup("You chose: " + str(folder_or_file), keep_on_top=True) sg.popup("You chose: " + str(folder_or_file), keep_on_top=True)
print("[LOG] User chose file: " + str(folder_or_file)) print("[LOG] User chose file: " + str(folder_or_file))
elif event == "Set Theme": elif event == "Set Theme":
print("[LOG] Clicked Set Theme!") print("[LOG] Clicked Set Theme!")
theme_chosen = values['-THEME LISTBOX-'][0] theme_chosen = values["-THEME LISTBOX-"][0]
print("[LOG] User Chose Theme: " + str(theme_chosen)) print("[LOG] User Chose Theme: " + str(theme_chosen))
window.close() window.close()
window = make_window(theme_chosen) window = make_window(theme_chosen)
elif event == 'Edit Me': elif event == "Edit Me":
sg.execute_editor(__file__) sg.execute_editor(__file__)
elif event == 'Versions': elif event == "Versions":
sg.popup_scrolled(__file__, sg.get_versions(), keep_on_top=True, non_blocking=True) sg.popup_scrolled(
__file__, sg.get_versions(), keep_on_top=True, non_blocking=True
)
window.close() window.close()
exit(0) exit(0)
if __name__ == '__main__':
sg.theme('black') if __name__ == "__main__":
sg.theme('dark red') sg.theme("black")
sg.theme('dark green 7') sg.theme("dark red")
sg.theme("dark green 7")
# sg.theme('DefaultNoMoreNagging') # sg.theme('DefaultNoMoreNagging')
main() main()
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册