如何在python中创建带有选项的弹出窗口?

如何在python中创建带有选项的弹出窗口?,python,interactive,Python,Interactive,对于我正在进行的项目,我希望创建一个包含多个不同选项的弹出窗口,该窗口可以返回一个值,该值基于用户选择的选项;我找到了获得简单弹出窗口的解决方案,但不是返回值的解决方案。我使用的是Python3.8。PySimpleGui是一种简单的方法——它似乎可以在Windows 10上与Python3.8.3一起使用 创建一个简单的gui对话框来进行选择并没有比这更容易的了(尽管它也可以在需要时进行更复杂的UI): 正如巴尼所说,PySimpleGUI是最简单的 您所描述的是PySimpleGUI烹饪书中

对于我正在进行的项目,我希望创建一个包含多个不同选项的弹出窗口,该窗口可以返回一个值,该值基于用户选择的选项;我找到了获得简单弹出窗口的解决方案,但不是返回值的解决方案。我使用的是Python3.8。

PySimpleGui是一种简单的方法——它似乎可以在Windows 10上与Python3.8.3一起使用

创建一个简单的gui对话框来进行选择并没有比这更容易的了(尽管它也可以在需要时进行更复杂的UI):


正如巴尼所说,PySimpleGUI是最简单的

您所描述的是PySimpleGUI烹饪书中所谓的a

这些类型的GUI可以编写为一行PySimpleGUI代码,因为您不需要完整的事件循环

将PySimpleGUI导入为sg
事件,值=sg.Window('选择一个选项',[[sg.Text('选择一个->')),sg.Listbox(['option a','option b','option c'],size=(20,3),key='LB'),
[sg.按钮('Ok')、sg.按钮('Cancel')]].read(close=True)
如果事件==“确定”:
弹出窗口(如果您选择了{values[“LB”][0]})
其他:
sg.popup\u cancel('用户中止')

在调用窗口之后,通过链式的
read
调用,您将获得用于关闭窗口的事件(哪个按钮或如果用“X”关闭)和值字典。在这种情况下,您的值字典将有一个单独的项
values['LB']
。对于列表框,此值将是一个列表。要选择项目,您可以参考
值['LB'][0]

您查看过吗?有很多方法,您具体在寻找什么,以及要详细显示的示例?我查看过,但我只找到了一个简单弹出窗口的选项。我相当缺乏经验,所以我可能错过了一些东西。谢谢。我记得几年前编写了一个程序,其中有一个带有文本框的大窗口,然后出现一个选项列表,用户可以选择其中一个选项,返回一个值并继续程序。中有一些预定义的选项,否则,您需要自己创建对话框。如果用户使用“X”关闭窗口,您需要添加一个event==sg.WIN_CLOSED检查。否则,当使用“X”时,您将永远留在事件循环中。谢谢-奇怪的是,我复制的原始源代码包含该测试,但它给出了一个未定义WIN_CLOSED的错误:-o所以我删除了它,但显然从未选中命中X。我为
事件添加了一个测试,它似乎是我得到的。刚刚从PySimpleGui 4.18.2更新到4.20.0,完全一样。
import PySimpleGUI as sg

#sg.theme('DarkAmber')   # Add a touch of color

options = ['Option a','Option b','Option c']

# All the stuff inside your window.
layout = [ 
            [sg.Text('Select one->'), sg.Listbox(options,select_mode=sg.LISTBOX_SELECT_MODE_SINGLE,size=(20,len(options)))],
            [sg.Button('Ok'), sg.Button('Cancel')]
        ]

# Create the Window
window = sg.Window('Make your choice', layout)

# Event Loop to process "events" and get the "values" of the input
while True:
    event, values = window.read()
    print( f"event={event}" )
    if event is None or event == 'Ok' or event == 'Cancel': # if user closes window or clicks cancel
        break
        
# close  the window        
window.close()

if event == "Cancel":
    print( "You cancelled" )
else:
    print('You entered ', values[0])
    sg.popup( f"You selected {values[0]}" )