Skip to content
🤔prompts chat🧠
🔍
question:python弹出窗口,窗口包括2个选择项,选中点确定返回选中的值

answer:可以使用 Python 的 Tkinter 模块来创建弹出窗口,具体操作如下所示: ```python from tkinter import * def show_options(): # 创建窗口 root = Tk() # 设置窗口标题 root.title("请选择一个选项") # 创建面板 panel = Frame(root) panel.pack(padx=10, pady=10) # 创建第一个复选框 var1 = BooleanVar() checkbox1 = Checkbutton(panel, text="选项1", variable=var1) checkbox1.pack(side=LEFT) # 创建第二个复选框 var2 = BooleanVar() checkbox2 = Checkbutton(panel, text="选项2", variable=var2) checkbox2.pack(side=LEFT) # 确认按钮的回调函数 def confirm(): result = [] if var1.get(): result.append("选项1") if var2.get(): result.append("选项2") root.destroy() print("您选择的选项是:", ", ".join(result)) # 创建确认按钮 ok_button = Button(root, text="确定", command=confirm, width=8) ok_button.pack(pady=10) # 运行窗口,等待用户操作 root.mainloop() # 调用函数显示选项窗口 show_options() ``` 这份代码中,通过 `Tk()` 函数创建了一个新的窗口对象 `root`,设置了窗口标题并添加面板和复选框,之后定义了 `confirm()` 函数作为确认按钮的回调函数,并通过 `Button()` 函数创建了一个确认按钮。最后,通过 `mainloop()` 函数启动窗口应用程序。 当用户在窗口中选择了相应的选项后,点击“确定”按钮,程序就会关闭窗口并在控制台输出所选的选项。在 `confirm()` 函数中,使用 `BooleanVar()` 类定义了两个复选框变量 `var1` 和 `var2`,并在窗口中创建了两个复选框与之关联,用户勾选了哪些选项就会在对应变量上设置为 `True`。在“确定”按钮的回调函数中,使用 `get()` 方法来获取复选框变量的值,并将勾选的选项保存在 `result` 列表中,最后通过 `join()` 方法将选项列表转为字符串并输出。

question:以上为单选项,且初始化窗口在屏幕中居中,窗口大小为屏幕尺寸的五分之一

answer:如果需要让弹出窗口仅支持单选项的话,只需要将 `BooleanVar()` 类型变量改为 `IntVar()` 变量,并为每个单选框分配一个不同的值即可。例如: ```python from tkinter import * def show_options(): # 创建窗口 root = Tk() # 设置窗口标题 root.title("请选择一个选项") # 计算窗口大小和位置 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() window_width = int(screen_width / 5) window_height = int(screen_height / 5) x = int((screen_width - window_width) / 2) y = int((screen_height - window_height) / 2) geometry = f"{window_width}x{window_height}+{x}+{y}" root.geometry(geometry) # 创建面板 panel = Frame(root) panel.pack(padx=10, pady=10) # 创建第一个单选框 var1 = IntVar() radio1 = Radiobutton(panel, text="选项1", variable=var1, value=1) radio1.pack(side=LEFT) # 创建第二个单选框 var2 = IntVar() radio2 = Radiobutton(panel, text="选项2", variable=var2, value=2) radio2.pack(side=LEFT) # 确认按钮的回调函数 def confirm(): result = None if var1.get() == 1: result = "选项1" elif var2.get() == 2: result = "选项2" root.destroy() if result: print("您选择的选项是:", result) else: print("您没有选择任何选项") # 创建确认按钮 ok_button = Button(root, text="确定", command=confirm, width=8) ok_button.pack(pady=10) # 运行窗口,等待用户操作 root.mainloop() # 调用函数显示选项窗口 show_options() ``` 在上面的代码中,使用 `IntVar()` 类型定义了两个单选框变量 `var1` 和 `var2`,并为每个单选框分配了不同的值。在回调函数 `confirm()` 中,根据变量的值来判断用户选择了哪个选项。 为了使窗口在屏幕中居中,并且大小为屏幕尺寸的五分之一,计算了以下窗口的位置和大小,使用 `geometry` 参数将这些信息传递给 `geometry()` 方法即可。具体计算方法可以看下面的代码示例: ```python screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() window_width = int(screen_width / 5) window_height = int(screen_height / 5) x = int((screen_width - window_width) / 2) y = int((screen_height - window_height) / 2) geometry = f"{window_width}x{window_height}+{x}+{y}" root.geometry(geometry) ```

question:把窗口居中且为屏幕尺寸的五分之一的代码加到上面代码中

answer:可以在上面的代码基础上添加居中和缩放到屏幕尺寸五分之一的功能,代码如下: ```python from tkinter import * def show_options(): # 创建窗口 root = Tk() # 设置窗口标题 root.title("请选择一个选项") # 计算窗口大小和位置 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() window_width = int(screen_width / 5) window_height = int(screen_height / 5) x = int((screen_width - window_width) / 2) y = int((screen_height - window_height) / 2) geometry = f"{window_width}x{window_height}+{x}+{y}" root.geometry(geometry) # 创建面板 panel = Frame(root) panel.pack(padx=10, pady=10) # 创建第一个单选框 var1 = IntVar() radio1 = Radiobutton(panel, text="选项1", variable=var1, value=1) radio1.pack(side=LEFT) # 创建第二个单选框 var2 = IntVar() radio2 = Radiobutton(panel, text="选项2", variable=var2, value=2) radio2.pack(side=LEFT) # 确认按钮的回调函数 def confirm(): result = None if var1.get() == 1: result = "选项1" elif var2.get() == 2: result = "选项2" root.destroy() if result: print("您选择的选项是:", result) else: print("您没有选择任何选项") # 创建确认按钮 ok_button = Button(root, text="确定", command=confirm, width=8) ok_button.pack(pady=10) # 运行窗口,等待用户操作 root.mainloop() # 调用函数显示选项窗口 show_options() ``` 上述代码中,计算窗口大小和位置的代码如下: ```python screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() window_width = int(screen_width / 5) window_height = int(screen_height / 5) x = int((screen_width - window_width) / 2) y = int((screen_height - window_height) / 2) geometry = f"{window_width}x{window_height}+{x}+{y}" root.geometry(geometry) ``` 这段代码首先获取了屏幕的宽度和高度,然后将窗口的宽度和高度设置为屏幕宽度和高度的五分之一,计算窗口的左上角坐标,最后使用 `geometry` 方法设置窗口大小和位置。

question:以上代码2个选项不能同时选中,只能任选其一

answer:您可以将单选框改为互斥的复选框来实现每次只能选择一个选项的功能。单选框(Radiobutton)是互斥的,而复选框(Checkbutton)是非互斥的,多个复选框可以同时选中。为了让多个复选框只能选择其中一个,我们需要在其中一个复选框被选中的回调函数中将其它复选框的状态设置为未选中状态。例如,下面是一个修改后的代码: ```python from tkinter import * def show_options(): # 创建窗口 root = Tk() # 设置窗口标题 root.title("请选择一个选项") # 计算窗口大小和位置 screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() window_width = int(screen_width / 5) window_height = int(screen_height / 5) x = int((screen_width - window_width) / 2) y = int((screen_height - window_height) / 2) geometry = f"{window_width}x{window_height}+{x}+{y}" root.geometry(geometry) # 创建面板 panel = Frame(root) panel.pack(padx=10, pady=10) # 创建第一个复选框 var1 = BooleanVar() checkbox1 = Checkbutton(panel, text="选项1", variable=var1, command=lambda: set_checkboxes(checkbox1, checkbox2)) checkbox1.pack(side=LEFT) # 创建第二个复选框 var2 = BooleanVar() checkbox2 = Checkbutton(panel, text="选项2", variable=var2, command=lambda: set_checkboxes(checkbox2, checkbox1)) checkbox2.pack(side=LEFT) # 设置初始状态,不选中任何选项 var1.set(False) var2.set(False) # 确认按钮的回调函数 def confirm(): result = [] if var1.get(): result.append("选项1") if var2.get(): result.append("选项2") root.destroy() print("您选择的选项是:", ", ".join(result)) # 创建确认按钮 ok_button = Button(root, text="确定", command=confirm, width=8) ok_button.pack(pady=10) # 运行窗口,等待

Released under the Bard License.

has loaded