Python
 Computer >> コンピューター >  >> プログラミング >> Python

tkinterのttk.Comboboxでテキストフィールド(選択値)をクリアする方法

ttk.Comboboxは、tkinterでドロップダウンリストを作成するための多機能なウィジェットの一つです。リストから値を選択すると、その値がコンボボックスの表示内容として反映されます。コンボボックスウィジェットは、Combobox(root, width, text) のコンストラクタを初期化することで簡単に作成できます。

ここで問題になるのは、ユーザーが一度選択した値をあとからクリアしたい場合です。この場合、set('') メソッドを使ってコンボボックスの値に空文字列を設定するのが最もシンプルな方法です。以下のサンプルコードでは、その具体的な実装手順を示しています。

サンプルコード

# 必要なライブラリをインポート
from tkinter import *
from tkinter import ttk

# tkinterのフレーム(ウィンドウ)のインスタンスを作成
win = Tk()

# ウィンドウサイズを設定
win.geometry("700x350")

# コンボボックスをクリアする関数を定義
def clear_cb():
    cb.set('')
    
# 曜日のタプルを定義
days= ('Sun','Mon','Tue','Wed','Thu','Fri','Sat')

# コンボボックスウィジェットを作成
var= StringVar()
cb= ttk.Combobox(win, textvariable= var)
cb['values']= days
cb['state']= 'readonly'
cb.pack(fill='x',padx= 5, pady=5)

# 選択された値をクリアするためのボタンを作成
button = Button(win, text= "Clear", command= clear_cb)
button.pack()

win.mainloop()

実行結果

上記のコードを実行すると、コンボボックスウィジェットと「Clear」ボタンが配置されたウィンドウが表示されます。

tkinterのttk.Comboboxでテキストフィールド(選択値)をクリアする方法

次に、「Clear」ボタンをクリックすると、コンボボックスで選択されていた値がクリアされ、テキストフィールドが空の状態に戻ります。

tkinterのttk.Comboboxでテキストフィールド(選択値)をクリアする方法

ポイントまとめ

  • コンボボックスの選択値をクリアするには set('') を呼び出すだけでOK
  • state='readonly' を設定しておくと、ユーザーによる自由入力を防げる
  • textvariableStringVar を紐付けておくと、値の取得や管理が容易になる
  1. TkinterのボタンでEntryウィジェットのテキスト・値を設定する方法

    はじめにTkinterのEntryウィジェットは、1行分のテキストを表示・入力するためのウィジェットです。このウィジェットの値や内容は、ボタンのクリックをトリガーとして設定することができます。Entryウィジェットに対する主な操作には、「insert(挿入)」と「delete(削除)」の2種類があります。ここでは、TkinterのButtonウィジェットを使って、Entryウィジェットの内容を設定する方法を解説します。コード例#Import the required libraries from tkinter import * #Create an instance of tkinter

  2. Tkinterでテキストウィジェットを読み取り専用(無効化)にする方法

    Tkinterでは、テキストウィジェットを無効化(disabled)したいケースがあります。これを実現するには、テキストウィジェットの state オプションを DISABLED に設定します。こうすることでテキストウィジェットがフリーズし、読み取り専用の状態になります。この記事では、テキストウィジェットとボタンを作成し、ボタンをクリックするとテキストウィジェットを即座に無効化できるサンプルを紹介します。コード例# ライブラリのインポート from tkinter import * # ウィンドウのインスタンスを作成 win = Tk() # ウィンドウのサイズを設定 win.geomet