如何使用tkInter显示一个对话框,询问用户多项选择问题?

5
无论如何,我一直在搜索一个 tkinter 函数,可以询问用户多项选择问题,最接近的我找到的是 messagebox.asknoyes,但它只提供 2 种选择,而且我无法编辑选择,因为它们是固定的(是或否),是否有一个 tkinter 函数可以做到我想要的?请注意:这不是 Taking input from the user in Tkinter 的重复问题,因为该问题询问如何从用户那里获取输入,因此用户可以提交任何他们想要的输入,而我想给用户一些预定义的选择来选择一个。

3
我认为没有相应的内置函数。你需要手动创建一个窗口,手动添加单选按钮和标签,等待用户响应,然后手动检查选中了哪个单选按钮。请注意保持原意,使翻译更加通俗易懂。 - Kevin
@Kevin,谢谢你,请把这个变成答案,这样我就可以接受它了。 - ArandomUserNameEG
可能是重复问题:在Tkinter中获取用户输入 - Anil_M
@Anil_M 不,不是。 - Lafexlos
1个回答

11
我认为没有内置的函数可以做到这一点。我认为您需要手动创建一个窗口,手动添加单选按钮和标签,等待用户响应,然后手动检查选择了哪个单选按钮。
幸运的是,这很简单,所以我为您快速实现了一个。
from tkinter import Tk, Label, Button, Radiobutton, IntVar
#    ^ Use capital T here if using Python 2.7

def ask_multiple_choice_question(prompt, options):
    root = Tk()
    if prompt:
        Label(root, text=prompt).pack()
    v = IntVar()
    for i, option in enumerate(options):
        Radiobutton(root, text=option, variable=v, value=i).pack(anchor="w")
    Button(text="Submit", command=root.destroy).pack()
    root.mainloop()
    if v.get() == 0: return None
    return options[v.get()]

result = ask_multiple_choice_question(
    "What is your favorite color?",
    [
        "Blue!",
        "No -- Yellow!",
        "Aaaaargh!"
    ]
)

print("User's response was: {}".format(repr(result)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接