TkinterのIntVarの使い方|値の取得や変更、ラジオボックス等での使い方を解説

スポンサーリンク

この記事では、TkinterのIntVar関数について、またそれを使ってPythonで整数の変数を保存、取得、管理する方法について学びます。

それでは、IntVar()関数を使い始めましょう。

スポンサーリンク

Tkinter IntVar() 関数

Tkinter には、通常の Python 型と同様に動作する組み込みのプログラミング型があり、 LabelEntry といったウィジェットの値をより効率的に操作するための機能が追加されています。

これらの変数には、値を変更するためのゲッターメソッドとセッターメソッドも含まれています。

 IntVar` はその一例です。

IntVar()` 関数を用いて定義された変数は整数データを保持し、ゲッターメソッドやセッターメソッドを用いて整数データを設定したり取得したりすることができる。

これらの変数は、例えばラジオボタンやチェックボックスボタンの変数パラメータ、ラベルウィジェットのtextvariableパラメータなど、様々なウィジェットのパラメータに渡すことができます(例を見てみましょう)。

これらの変数がウィジェットに接続されると、接続は双方向に働きます:IntVar()変数が変化すると、ウィジェットの値も自動的に新しい値に更新されます。

Tkinter IntVar() 変数の定義

Tkinter の IntVar() 関数は、以下のパラメータを受け取って変数を定義します。

  • master: master: IntVar() 変数が関連付けられているウィンドウです。何も指定しない場合は、デフォルトでルートウィンドウになります。
  • value: 整数型変数に与えられる初期値.デフォルトは0です。
  • name: 定義された変数に付けられる名前。デフォルトは PY_VARnum (like PY_VAR1, PY_VAR2, etc)。
import tkinter as tk
 
master_window = tk.Tk()
master_window.geometry("250x150")
master_window.title("IntVar Example")
 
integer_variable = tk.IntVar(master_window, 255)
 
label = tk.Label(master_window, textvariable=integer_variable, height=250)
label.pack()
 
master_window.mainloop()
import tkinter as tk
 
master_window = tk.Tk()
master_window.geometry("250x150")
master_window.title("IntVar Example")
 
integer_variable = tk.IntVar(master=master_window, value=1)
 
label = tk.Label(master_window, textvariable=integer_variable, height=250)
label.pack()
 
integer_variable.set(100)
 
master_window.mainloop()

IntVar() 変数の値を変更する

IntVar()は Tkinter 組み込みのプログラミングタイプなので、変数の値を変更するための setter メソッドを含んでいます。

整数データの値を変更するには、set()` メソッドを使用します。

import tkinter as tk
 
master_window = tk.Tk()
 
int_var = tk.IntVar(master = master_window, value = 255)
 
num = int_var.get()
 
print(type(num))
print(num)

IntVar() 変数の値を取得する

IntVar()変数に対してget()` メソッドを実行すると、その変数に格納されているテキストを取得することができます

<class 'int'>
255

結果は以下の通りです。

import tkinter as tk
 
class SumOfTwoNumbers(tk.Tk):
  def __init__(self):
    super().__init__()
    self.title("Sum of 2 Numbers")
    self.geometry("300x300")
     
    # define IntVar() variables A and B
    self.A = tk.IntVar()
    self.B = tk.IntVar()
     
    # assign methods to notify on IntVar() variables
    self.A.trace_add("write", self.calculate_sum)
    self.B.trace_add("write", self.calculate_sum)
     
    self.create_widgets()
   
  def create_widgets(self):
    self.A_label = tk.Label(self, text="A: ")
    self.B_label = tk.Label(self, text="B: ")
     
    self.A_entry = tk.Entry(self, textvariable=self.A)
    self.B_entry = tk.Entry(self, textvariable=self.B)
     
    self.sum_label = tk.Label(self, text="Sum: ")
    self.result_label = tk.Label(self, text=self.A.get() + self.B.get())
     
    self.A_label.grid(row=0, column=0, padx=5, pady=5)
    self.A_entry.grid(row=0, column=1, padx=5, pady=5)
    self.B_label.grid(row=1, column=0, padx=5, pady=5)
    self.B_entry.grid(row=1, column=1, padx=5, pady=5)
    self.sum_label.grid(row=2, column=0, padx=5, pady=5)
    self.result_label.grid(row=2, column=1, padx=5, pady=5)
 
  def calculate_sum(self, *args):
    try:
      num_a = self.A.get()
    except:
      num_a = 0
     
    try:
      num_b = self.B.get()
    except:
      num_b = 0
     
    self.result_label['text'] = num_a + num_b
 
if __name__ == "__main__":
  app = SumOfTwoNumbers()
  app.mainloop()

Tkinter IntVar() の例

IntVar()のさまざまな使用例について考えてみましょう。

ラジオボタンとチェックボックスウィジェットで選択された値を監視する

IntVar()` 変数のもう一つの一般的な使い方は、次の例のようにラジオボタンとチェックボックスのウィジェットで選択された値を追跡することです。

import tkinter as tk
 
class RadioButtonExample(tk.Tk):
  def __init__(self):
    super().__init__()
    self.title("Radio Button Example")
    self.geometry("300x300")
     
    # define IntVar() for selected value
    self.selected_value = tk.IntVar()
     
    self.create_widgets()
   
  def create_widgets(self):
    self.intro_label = tk.Label(
      self,
      text="Choose your favourite language").pack()
 
    self.rb1 = tk.Radiobutton(
      self,
      text="Python",
      padx=5,
      pady=5,
      variable=self.selected_value,
      value=1).pack()
     
    self.rb2 = tk.Radiobutton(
      self,
      text="Java",
      padx=5,
      pady=5,
      variable=self.selected_value,
      value=2).pack()
     
    self.rb3 = tk.Radiobutton(
      self,
      text="C++",
      padx=5,
      pady=5,
      variable=self.selected_value,
      value=3).pack()
     
    self.rb4 = tk.Radiobutton(
      self,
      text="Dart",
      padx=5,
      pady=5,
      variable=self.selected_value,
      value=4).pack()
     
    self.text_label = tk.Label(
      self,
      text="Option selected is:",
      pady=15
    ).pack()
     
    self.value_label = tk.Label(
      self,
      textvariable=self.selected_value,
      padx=5,
      pady=5).pack()
 
if __name__ == "__main__":
  app = RadioButtonExample()
  app.mainloop()

その出力です。

まとめ

この記事では、Tkinter の IntVar() とそれを使用できる様々なシナリオについて学びました。

また、他のウィジェットを自動的に更新するのに役立つコールバックを定義することで、生活をより簡単にすることができます

お読みいただきありがとうございました。

タイトルとURLをコピーしました