我在我的应用中使用了修补程序Radio Button
,如下所示!
# Get checkboxes for Main Coin Selector
checkbox_btc_main = tkinter.Radiobutton(app.window, text="BTC", variable=main_coin, value="btc", command=do_analyze_coin)
checkbox_bcc_main = tkinter.Radiobutton(app.window, text="BCC", variable=main_coin, value="bcc", command=do_analyze_coin)
checkbox_dash_main = tkinter.Radiobutton(app.window, text="DASH", variable=main_coin, value="dash", command=do_analyze_coin)
checkbox_doge_main = tkinter.Radiobutton(app.window, text="DOGE", variable=main_coin, value="doge", command=do_analyze_coin)
checkbox_eth_main = tkinter.Radiobutton(app.window, text="ETH", variable=main_coin, value="eth", command=do_analyze_coin)
checkbox_ltc_main = tkinter.Radiobutton(app.window, text="LTC", variable=main_coin, value="ltc", command=do_analyze_coin)
checkbox_nxt_main = tkinter.Radiobutton(app.window, text="NXT", variable=main_coin, value="nxt", command=do_analyze_coin)
checkbox_str_main = tkinter.Radiobutton(app.window, text="STR", variable=main_coin, value="str", command=do_analyze_coin)
checkbox_nem_main = tkinter.Radiobutton(app.window, text="NEM", variable=main_coin, value="xem", command=do_analyze_coin)
checkbox_xrp_main = tkinter.Radiobutton(app.window, text="XRP", variable=main_coin, value="xrp", command=do_analyze_coin)
# Get checkboxes for Coin Selector
checkbox_btc = tkinter.Radiobutton(app.window, text="BTC", variable=coin, value="btc", command=do_analyze_coin)
checkbox_bcc = tkinter.Radiobutton(app.window, text="BCC", variable=coin, value="bcc", command=do_analyze_coin)
checkbox_dash = tkinter.Radiobutton(app.window, text="DASH", variable=coin, value="dash", command=do_analyze_coin)
checkbox_doge = tkinter.Radiobutton(app.window, text="DOGE", variable=coin, value="doge", command=do_analyze_coin)
checkbox_eth = tkinter.Radiobutton(app.window, text="ETH", variable=coin, value="eth", command=do_analyze_coin)
checkbox_ltc = tkinter.Radiobutton(app.window, text="LTC", variable=coin, value="ltc", command=do_analyze_coin)
checkbox_nxt = tkinter.Radiobutton(app.window, text="NXT", variable=coin, value="nxt", command=do_analyze_coin)
checkbox_str = tkinter.Radiobutton(app.window, text="STR", variable=coin, value="str", command=do_analyze_coin)
checkbox_nem = tkinter.Radiobutton(app.window, text="NEM", variable=coin, value="xem", command=do_analyze_coin)
checkbox_xrp = tkinter.Radiobutton(app.window, text="XRP", variable=coin, value="xrp", command=do_analyze_coin)
# Load Coin selector Button
app.load_coin_selector_checkbox(checkbox_btc_main, rown=1, columnn=3)
app.load_coin_selector_checkbox(checkbox_bcc_main, rown=2, columnn=3)
app.load_coin_selector_checkbox(checkbox_dash_main, rown=3, columnn=3)
app.load_coin_selector_checkbox(checkbox_doge_main, rown=4, columnn=3)
app.load_coin_selector_checkbox(checkbox_eth_main, rown=5, columnn=3)
app.load_coin_selector_checkbox(checkbox_ltc_main, rown=6, columnn=3)
app.load_coin_selector_checkbox(checkbox_nxt_main, rown=7, columnn=3)
app.load_coin_selector_checkbox(checkbox_str_main, rown=8, columnn=3)
app.load_coin_selector_checkbox(checkbox_nem_main, rown=9, columnn=3)
app.load_coin_selector_checkbox(checkbox_xrp_main, rown=10, columnn=3)
# Load Coin selector Button
app.load_coin_selector_checkbox(checkbox_btc, rown=1, columnn=4)
checkbox_btc.deselect()
app.load_coin_selector_checkbox(checkbox_bcc, rown=2, columnn=4)
app.load_coin_selector_checkbox(checkbox_dash, rown=3, columnn=4)
app.load_coin_selector_checkbox(checkbox_doge, rown=4, columnn=4)
app.load_coin_selector_checkbox(checkbox_eth, rown=5, columnn=4)
app.load_coin_selector_checkbox(checkbox_ltc, rown=6, columnn=4)
app.load_coin_selector_checkbox(checkbox_nxt, rown=7, columnn=4)
app.load_coin_selector_checkbox(checkbox_str, rown=8, columnn=4)
app.load_coin_selector_checkbox(checkbox_nem, rown=9, columnn=4)
app.load_coin_selector_checkbox(checkbox_xrp, rown=10, columnn=4)
这是另一个用于创建Radio Button
并将其加载到应用
def create_coin_selector_checkbox(self, checkbox_text="Text", checkbox_value="Value"):
return tkinter.Checkbutton(
self.window,
text = checkbox_text,
variable=checkbox_value
)
def load_coin_selector_checkbox(self, checkbox, rown = 0, columnn = 0):
checkbox.grid(
row=rown,
column=columnn,
sticky='W',
ipady = 2.5
)
问题是第二列中的Radio Buttons
显示为减号。虽然第一列中的Radio Buttons
正确显示。我希望第二列中的Radio Buttons
看起来像第一列中的Radio Buttons
。这是应用程序窗口的快照!
答案 0 :(得分:1)
按钮本质上设计为打开或关闭。在您的情况下,您将它们设置为第三个值,即空字符串。默认情况下,空字符串是tristatevalue
选项的值。意思是,如果值是空字符串,则检查按钮以第三状态显示。其他一些工具包称之为 indeterminate 值。
这样做的原因是支持选择了一些孩子的父母。如果它们全部被选中,您可以检查父项,如果它们都未被选中,您可以取消选择父项,但如果选择了某些子项而某些子项未被选中,则需要父项的第三个可视状态。因此,tkinter支持此用例的三态值。
来自规范tcl/tk documentation:
如果选中了一个检查按钮,则通常使用选定的外观绘制指标,并将与检查按钮关联的Tcl变量设置为特定值(通常为1)。指示符内部带有复选标记。如果未选中复选框,则使用取消选择的外观绘制指标,并将关联变量设置为不同的值(通常为0)。在内部没有复选标记的情况下绘制指标。 在变量(如果指定)具有与三态值匹配的值的特殊情况下,指示符以三态外观绘制,并处于指示混合或多个值的三态模式。
您可以通过以下方法之一解决此问题:
onvalue
或offvalue
)或onvalue
,offvalue
或空字符串以外的其他值,或tristatevalue
设置为onvalue
,offvalue
或空字符串以外的其他内容,然后将值设置为空字符串