0

所以我想要实现的是这样的: 单选按钮示例

所以我知道这可以在常规tkinter 中完成,indicatoron=0但这不适用于 ttk 或主题 tkinter。有谁知道我将如何用我目前拥有的东西来实现这一目标:

radiobutton1 = ttk.Radiobutton(labelFrameDegreesIncrement, text='1°', variable=varDegreeIncrement, value=1).grid(row=0, column=0)

如果这不是此处发布的表格问题,也很抱歉。这是我第一次发布问题。

4

1 回答 1

2

问题:主题 tkinter Radiobutton 凹陷和凸起?

使用以下style options命令隐藏indicator

indicatorrelief=tk.FLAT,
indicatormargin=-1,
indicatordiameter=-1,

用于style.map(...根据 更改background=颜色state


  • 样式选项
    根据参考:某些选项仅适用于特定主题。

    默认 经典的  蛤  alt
    default          classic          clam                    alt

要隐藏indicator、 使用theme clamalt,您需要:indicatormargin=-10


import tkinter as tk
import tkinter.ttk as ttk

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title('ttk')
        style = ttk.Style(self)
        # style.theme_use('alt')  # 'aqua', 'step', 'clam', 'alt', 'default', 'classic'

        style.configure('IndicatorOff.TRadiobutton',
                        indicatorrelief=tk.FLAT,
                        indicatormargin=-1,
                        indicatordiameter=-1,
                        relief=tk.RAISED,
                        focusthickness=0, highlightthickness=0, padding=5)

        style.map('IndicatorOff.TRadiobutton',
                  background=[('selected', 'white'), ('active', '#ececec')])

        MODES = [("Monochrome", "1"),
                 ("Grayscale", "L"),
                 ("True color", "RGB"),
                 ("Color separation", "CMYK")]

        v = tk.StringVar(self, "L")  # initialize

        for text, mode in MODES:
            ttk.Radiobutton(self, text=text, variable=v, value=mode, width=15,
                            style='IndicatorOff.TRadiobutton').grid()


if __name__ == "__main__":
    App().mainloop()

用 Python 测试:3.5 - 'TclVersion':8.6 'TkVersion':8.6

于 2019-11-16T19:25:02.430 回答