messagebox
用于向用户显示消息、警告等,或提供是/否/取消/中止之间的选择。您正在寻找的是Radiobutton
.
每个 Radiobutton 都有一个值,并与获取该值的变量相关联。当您将许多与同一个变量绑定的此类按钮分组时,您将获得多选之一。
这是一个简单的示例,为方便起见,其中的值是整数(从 0 开始)。如果你坚持使用字符串,这是你可以改变的。您只需要一个带有单选按钮的框架和一个启动游戏按钮,它会读取您的选择并将其传递给您的主应用程序。
正如 Bryan Oakley 评论的那样,虽然您可以打开辅助窗口,但您不需要。您可以使用根窗口来显示选择,一旦用户做出选择,您可以将单选按钮替换为程序的主要部分。如果需要,您可以显示一个弹出窗口,但这不是唯一的解决方案。
import tkinter as tk
class StartGameMenuWindow:
def __init__(self, parent):
self.parent = parent
self.frame = tk.Frame(parent)
self.frame.pack()
self.menu_value = tk.IntVar()
self._create_items()
def _create_items(self):
modes = ('Basic', 'Advanced')
for value, mode in enumerate(modes):
tk.Radiobutton(self.frame,
text=mode,
variable=self.menu_value,
value=value).pack()
tk.Button(self.frame, text='Start game', command=self.launch).pack()
def launch(self):
value = self.menu_value.get()
self.frame.destroy()
# Launch your game window with `value` as input
root = tk.Tk()
m = StartGameMenuWindow(root)
tk.mainloop()
如果你真的想要一个弹出窗口,
# instead of
self.frame = tk.Frame(parent)
self.frame.pack()
# use this, but make sure to rename `self.frame` everywhere in the class
self.window = tk.Toplevel()