デスクトップアプリケーションの画面を考える時に、テキストエリアやボタンなどのウィジェットの「入力可/不可」の切り替えを行う必要があります。
このページでは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()
画面表示後にボタンをクリックすると、以下のエラーになります。