web-dev-qa-db-ja.com

Tkinter:ttk.Radiobuttonをアクティブに設定してその値を取得するにはどうすればよいですか?

1)GUIアプリを起動すると、デフォルトでアクティブになる3つのttk.Radiobuttonsのいずれかを設定する必要があります。
どうすればいいのですか?

2)ttk.Radiobuttonsの1つがユーザーによってアクティブ化/クリックされたかどうかも確認する必要があります。
どうすればいいのですか?

rb1 = ttk.Radiobutton(self.frame, text='5', variable=self.my_var, value=5)
rb2 = ttk.Radiobutton(self.frame, text='10', variable=self.my_var, value=10)
rb3 = ttk.Radiobutton(self.frame, text='15', variable=self.my_var, value=15)
self.rb1.grid(row=0)
self.rb2.grid(row=1)
self.rb3.grid(row=2)
8
minerals

self.my_var.set(1)を使用して、デフォルトのRadioButtonとしてtext='5'を使用してラジオボタンを設定します。

選択したものを取得するには、関数を呼び出す必要があります

rb1 = ttk.Radiobutton(self.frame, text='5', variable=self.my_var, value=5,command=self.selected)
rb2 = ttk.Radiobutton(self.frame, text='10', variable=self.my_var, value=10,command=self.selected)
rb3 = ttk.Radiobutton(self.frame, text='15', variable=self.my_var, value=15,command=self.selected)
self.rb1.grid(row=0)
self.rb2.grid(row=1)
self.rb3.grid(row=2)

def selected(self):
     if self.my_var.get()==5:
        "do something"
     Elif self.my_var.get()==10:
        "do something"
     else:
        "do something"
18
Alok

最初の質問に関しては、便利で簡単な方法はinvokeメソッドを呼び出すことです。

rb2.invoke()

これにより、このボタンに関連付けられているcommandも実行されることに注意してください。

Ttk :: radiobutton invoke document を参照してください。

9
fbmd

Gogoの回答に何かを追加しているだけですが、評判が十分でないためコメントできません。

ラジオボタンまたはプログラムが変数を認識しない前に、self.my_var=tk.IntVar()を追加します。詳細については、 変数クラス を参照してください。

たとえば、私の場合、StringVar()が必要です。これはpython 3. * tkinterTkinterに変更しますpython 2(私はそうではありません100%確実に)

import tkinter as tk
from tkinter import ttk

class XFile_Page(tk.Frame):
    ...

    self.joinType = tk.StringVar()
    self.rbLeft = ttk.Radiobutton(self.frameRadioButtons, text='left', variable=self.joinType, value='left',command=self.RadioBtnSelected)
    self.rbRight = ttk.Radiobutton(self.frameRadioButtons, text='right', variable=self.joinType, value='right',command=self.RadioBtnSelected)

    self.rbLeft.grid(row=0)
    self.rbRight.grid(row=1)

    #select the rbLeft radiobutton
    self.rbLeft.invoke()

    def RadioBtnSelected(self):
        print(self.joinType.get())
1
Sébastien S.

_rb1.state['selected']_を使用してデフォルトを_rb1_に設定し、self.my_var.get()を使用してラジオボタンの値(つまりテキスト変数)を取得できます。

1
Aaditya M Nair