PySimpleGUI テキストエリアの「入力可/不可」を切り替える方法

*本サイトはアフィリエイト広告を利用しています。

デスクトップアプリケーションの画面を考える時に、テキストエリアやボタンなどのウィジェットの「入力可/不可」の切り替えを行う必要があります。

このページではdisabled(無効)プロパティを使用した、「入力可/不可」の切り替えについて解説しています。

参考までにreadonly(読み取り専用)を使用しての切り替えはエラーになります。

開発環境のバージョンは以下です。
Python 3.11.4
PySimpleGUI 4.60.5

スポンサーリンク
スポンサーリンク

サンプル画面

以下の画面がサンプルです。

「LOCK」ボタンで入力エリアを入力不可に、「FREE」ボタンで入力可にします。

スポンサーリンク

コーディングサンプル

入力可/不可の切り替えには「update(disabled=True/False)」を使用します。

以下のコーデイングの下線部で切り替えを行っています。

import PySimpleGUI as sg

layout = [[sg.T("入力エリア"),sg.I(key="in")],
          [sg.B("LOCK",key="lock"),sg.B("FREE",key="free")]]

window = sg.Window("サンプル",layout)

while True:
    e,v = window.read()

    if e == "lock":
        window["in"].update(disabled=True)
    if e == "free":
        window["in"].update(disabled=False)
    if e == None:
        break

window.close()

「読み取り専用」での切り替えはエラーになる

入力可/不可の切り替え「update(readonly=True/False)」はエラーになります。

import PySimpleGUI as sg

layout = [[sg.T("入力エリア"),sg.I(key="in",readonly=True)],
          [sg.B("LOCK",key="lock"),sg.B("FREE",key="free")]]

window = sg.Window("サンプル",layout)

while True:
    e,v = window.read()

    if e == "lock":
        window["in"].update(readonly=True)
    if e == "free":
        window["in"].update(readonly=False)
    if e == None:
        break

window.close()

画面表示後にボタンをクリックすると、以下のエラーになります。

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