我想知道如何才能在单击校验按钮后得到显示的消息。说些你选择了1-3的话。有什么想法吗?
msg1 = f"How many pairs of shoes do you have?\n"
self.text_widget.configure(state=NORMAL)
self.text_widget.insert(END, msg1, 'person_text')
self.text_widget.configure(state=DISABLED)
var1 = tk.StringVar()
box1 = tk.Checkbutton(self.window, variable = var1, offvalue="", onvalue="1-3", text = '1-3')
var2 = tk.StringVar()
box2 = tk.Checkbutton(self.window, variable = var2, offvalue="", onvalue="4-7", text = '4-7')
var3 = tk.StringVar()
box3 = tk.Checkbutton(self.window, variable = var3, offvalue="", onvalue="10+", text = '10+')
self.text_widget.window_create("5.0", window = box1)
self.text_widget.window_create("5.0", window = box2)
self.text_widget.window_create("5.0", window = box3)发布于 2022-07-08 18:33:11
我可能建议使用ttk.Radiobutton小部件而不是tk.Checkbutton,因为这些选项似乎相互排斥。另外,您只需要一个tk.StringVar()就可以以这种方式存储选择值。
import tkinter as tk
import tkinter.messagebox as tkm
from tkinter import ttk
def on_btn_change() -> None:
"""This function is called when a selection is made"""
selection=btn_var.get() # fetch the selected value
tkm.showinfo( # show the dialog message
title='Selection Made',
message=f'You selected {selection}'
)
btn_var = tk.StringVar() # variable to store the button selection
buttons = ['1-3', '4-6', '7-9', '10+'] # button names / values
for name in buttons: # create buttons
ttk.Radiobutton(
root, # or whatever your tk.Tk() instance is called
text=name,
value=name,
variable=btn_var, # store the selection in 'btn_var'
command=on_btn_change, # this function is called each time the button changes
state=tk.NORMAL # not required, but it doesn't hurt anything
).pack() # remember to 'pack()' or nothing will show up!编辑--只是想说这只是一个例子,显然不会按原样运行。另外,如果您正在使用类构建您的Tk应用程序(您似乎--这一点对您很好),那么您需要将self作为参数添加到on_btn_change()中,例如:def on_btn_change(self) -> None: . . .,您可能希望分别将btn_var和buttons更改为self.btn_var和self.buttons。
https://stackoverflow.com/questions/72915246
复制相似问题