Window in Window with PySimpleGUI list
Window in Window with PySimpleGUI list
我正在尝试在 gui ish 中获取 gui。
第一个 gui 的布局:
layout = [[sg.InputText(size=(31,1), key='-OUTPUT-')],
[sg.Button('(', size=(5,1)), sg.Button(')', size=(5,1)), sg.Button('C', size=(5,1)), sg.Button('<<', size=(5,1))],
[sg.Button('7', size=(5,1)), sg.Button('8', size=(5,1)), sg.Button('9', size=(5,1)), sg.Button('/', size=(5,1))],
[sg.Button('4', size=(5,1)), sg.Button('5', size=(5,1)), sg.Button('6', size=(5,1)), sg.Button('*', size=(5,1))],
[sg.Button('1', size=(5,1)), sg.Button('2', size=(5,1)), sg.Button('3', size=(5,1)), sg.Button('-', size=(5,1))],
[sg.Button('0', size=(5,1)), sg.Button('.', size=(5,1)), sg.Button('=', size=(5,1)), sg.Button('+', size=(5,1))]]
然后是第二种布局:
layout = [[sg.Text('Text:', size=(9,1)), sg.Input()],
[sg.Text('Amount:', size=(9,1)), sg.Slider(range=(1,1000),default_value=1,size=(35,15),orientation='horizontal', resolution=10)],
[sg.Text('Speed(m/s):', size=(9,1)), sg.Slider(range=(1000,1),default_value=1000,size=(35,15),orientation='horizontal', resolution=100)],
[sg.Text('Delay:', size=(9,1)), sg.Slider(range=(1,10),default_value=1,size=(35,15),orientation='horizontal')],
[sg.Button('Start')]]
根布局是:
layout = [[sg.Listbox(values=['Wifi Passwords', 'Email Bot', 'Auto Clicker', 'Calculator', 'Spambot', 'Upload File', 'IP Lookup', 'URL Resolver', 'Youtube Downloader', 'Is Leap Year', 'Space Shot','URL Shortener','Tic Tac Toe', 'Random Password', 'Fizz Buzz', 'Pong', 'Turtle Race'], size=(30, 15), key=0, enable_events=True)]]
我该如何设置它,以便当我从根目录中的列表中选择 1 个选项时,匹配它的布局显示在它下面的子 window 中?
感谢您的帮助。
这是一个例子,
import PySimpleGUI as sg
sg.theme("DarkBlue")
sg.set_options(font=('Courier New', 16))
def main_window(function_list):
layout = [[sg.Listbox(values=function_list, size=(30, 15), key='Func_List',
enable_events=True, select_mode=sg.LISTBOX_SELECT_MODE_SINGLE)]]
return sg.Window("Main Window", layout, finalize=True)
def calculator():
size = (5, 1)
layout = [
[sg.InputText(size=(31,1), key='-OUTPUT-')]]+[
[sg.Button(char, size=size) for char in line] for line in
[['(', ')', 'C', '<<'], ['789/'], ['456*'], ['123-'], ['0.=+']]
]
window = sg.Window("Calculator", layout, finalize=True, modal=True)
while True:
event, values =window.read()
if event == sg.WINDOW_CLOSED:
break
window.close()
def slider():
text_size = (9, 1)
options = {'size':(35, 15), 'orientation':'horizontal'}
layout = [
[sg.Text('Text:', size=text_size),
sg.Input()],
[sg.Text('Amount:', size=text_size),
sg.Slider(range=(1,1000),default_value=1, **options, resolution=10)],
[sg.Text('Speed(m/s):', size=text_size),
sg.Slider(range=(1000,1),default_value=1000,**options, resolution=100)],
[sg.Text('Delay:', size=text_size),
sg.Slider(range=(1,10), default_value=1, **options)],
[sg.Button('Start')]
]
window = sg.Window("Slider", layout, finalize=True, modal=True)
while True:
event, values =window.read()
if event == sg.WINDOW_CLOSED:
break
window.close()
func_dict = {
'Wifi Passwords': None,
'Email Bot': None,
'Auto Clicker': None,
'Slider': slider,
'Calculator': calculator,
'Spambot': None,
'Upload File': None,
'IP Lookup': None,
'URL Resolver': None,
'Youtube Downloader': None,
'Is Leap Year': None,
'Space Shot': None,
'URL Shortener': None,
'Tic Tac Toe': None,
'Random Password': None,
'Fizz Buzz': None,
'Pong': None,
'Turtle Race': None,
}
func_list = sorted(func_dict.keys())
window = main_window(func_list)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == 'Func_List':
if not values[event]:
continue
item = values[event][0]
if item in func_dict:
function = func_dict[item]
if function:
window.hide()
function()
window.un_hide()
window.close()
我正在尝试在 gui ish 中获取 gui。
第一个 gui 的布局:
layout = [[sg.InputText(size=(31,1), key='-OUTPUT-')],
[sg.Button('(', size=(5,1)), sg.Button(')', size=(5,1)), sg.Button('C', size=(5,1)), sg.Button('<<', size=(5,1))],
[sg.Button('7', size=(5,1)), sg.Button('8', size=(5,1)), sg.Button('9', size=(5,1)), sg.Button('/', size=(5,1))],
[sg.Button('4', size=(5,1)), sg.Button('5', size=(5,1)), sg.Button('6', size=(5,1)), sg.Button('*', size=(5,1))],
[sg.Button('1', size=(5,1)), sg.Button('2', size=(5,1)), sg.Button('3', size=(5,1)), sg.Button('-', size=(5,1))],
[sg.Button('0', size=(5,1)), sg.Button('.', size=(5,1)), sg.Button('=', size=(5,1)), sg.Button('+', size=(5,1))]]
然后是第二种布局:
layout = [[sg.Text('Text:', size=(9,1)), sg.Input()],
[sg.Text('Amount:', size=(9,1)), sg.Slider(range=(1,1000),default_value=1,size=(35,15),orientation='horizontal', resolution=10)],
[sg.Text('Speed(m/s):', size=(9,1)), sg.Slider(range=(1000,1),default_value=1000,size=(35,15),orientation='horizontal', resolution=100)],
[sg.Text('Delay:', size=(9,1)), sg.Slider(range=(1,10),default_value=1,size=(35,15),orientation='horizontal')],
[sg.Button('Start')]]
根布局是:
layout = [[sg.Listbox(values=['Wifi Passwords', 'Email Bot', 'Auto Clicker', 'Calculator', 'Spambot', 'Upload File', 'IP Lookup', 'URL Resolver', 'Youtube Downloader', 'Is Leap Year', 'Space Shot','URL Shortener','Tic Tac Toe', 'Random Password', 'Fizz Buzz', 'Pong', 'Turtle Race'], size=(30, 15), key=0, enable_events=True)]]
我该如何设置它,以便当我从根目录中的列表中选择 1 个选项时,匹配它的布局显示在它下面的子 window 中?
感谢您的帮助。
这是一个例子,
import PySimpleGUI as sg
sg.theme("DarkBlue")
sg.set_options(font=('Courier New', 16))
def main_window(function_list):
layout = [[sg.Listbox(values=function_list, size=(30, 15), key='Func_List',
enable_events=True, select_mode=sg.LISTBOX_SELECT_MODE_SINGLE)]]
return sg.Window("Main Window", layout, finalize=True)
def calculator():
size = (5, 1)
layout = [
[sg.InputText(size=(31,1), key='-OUTPUT-')]]+[
[sg.Button(char, size=size) for char in line] for line in
[['(', ')', 'C', '<<'], ['789/'], ['456*'], ['123-'], ['0.=+']]
]
window = sg.Window("Calculator", layout, finalize=True, modal=True)
while True:
event, values =window.read()
if event == sg.WINDOW_CLOSED:
break
window.close()
def slider():
text_size = (9, 1)
options = {'size':(35, 15), 'orientation':'horizontal'}
layout = [
[sg.Text('Text:', size=text_size),
sg.Input()],
[sg.Text('Amount:', size=text_size),
sg.Slider(range=(1,1000),default_value=1, **options, resolution=10)],
[sg.Text('Speed(m/s):', size=text_size),
sg.Slider(range=(1000,1),default_value=1000,**options, resolution=100)],
[sg.Text('Delay:', size=text_size),
sg.Slider(range=(1,10), default_value=1, **options)],
[sg.Button('Start')]
]
window = sg.Window("Slider", layout, finalize=True, modal=True)
while True:
event, values =window.read()
if event == sg.WINDOW_CLOSED:
break
window.close()
func_dict = {
'Wifi Passwords': None,
'Email Bot': None,
'Auto Clicker': None,
'Slider': slider,
'Calculator': calculator,
'Spambot': None,
'Upload File': None,
'IP Lookup': None,
'URL Resolver': None,
'Youtube Downloader': None,
'Is Leap Year': None,
'Space Shot': None,
'URL Shortener': None,
'Tic Tac Toe': None,
'Random Password': None,
'Fizz Buzz': None,
'Pong': None,
'Turtle Race': None,
}
func_list = sorted(func_dict.keys())
window = main_window(func_list)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == 'Func_List':
if not values[event]:
continue
item = values[event][0]
if item in func_dict:
function = func_dict[item]
if function:
window.hide()
function()
window.un_hide()
window.close()