私は PySimpleGUI ライブラリを使用しており、コードワード パズル (基本的にクロスワードと同じ形式) を入力するための GUI (以下のコード) を作成しようとしています。GUI を、数値または文字を取ることができる指定された次元のテキスト ボックスの配列にしたいと考えています。
正しい形式の GUI をビルドします ( GUI のビルド)が、各ボックスに 1 ~ 9 の数字を入力し ( GUIを塗りつぶす )、[OK] をクリックすると、コンソールに出力される出力は次のようになります。 、、、、、、」なので、最後の入力セットのみを読み取っていると想定しました。最後の行を空白のままにして、前のように上 2 行を埋めると、「、、、、、、、、」がコンソールに出力されます。リストの内包表記を for ループに変更してみましたが、同じ結果が得られましたが、レイアウト (以下のコード) をハードコードして 1-9 に入力すると、目的の "1,2,3,4,5,6,7 が得られました、8、9、」。変数を使用して PySimpleGUI のレイアウトをどのように実装しますか?
# original code
import PySimpleGUI as sg
def entryGUI(length, width):
line = [sg.InputText('', size=(3, 1)) for i in range(length)]
entryLayout = [line for i in range(width)]
entryLayout.append([sg.CloseButton("OK"), sg.CloseButton("Cancel")])
entryWin = sg.Window("CodeWord Solver").Layout(entryLayout)
button, values = entryWin.Read()
for value in values:
print(value + ",", end="")
entryGUI(3, 3)
# hardcoded code
import PySimpleGUI as sg
def entryGUI(length, width):
entryLayout = [
[sg.InputText('', size=(3, 1)), sg.InputText('', size=(3, 1)), sg.InputText('', size=(3, 1))],
[sg.InputText('', size=(3, 1)), sg.InputText('', size=(3, 1)), sg.InputText('', size=(3, 1))],
[sg.InputText('', size=(3, 1)), sg.InputText('', size=(3, 1)), sg.InputText('', size=(3, 1))],
[sg.CloseButton("OK"), sg.CloseButton("Cancel")]
]
entryWin = sg.Window("CodeWord Solver").Layout(entryLayout)
button, values = entryWin.Read()
# if button != "OK":
# exit()
# else:
for value in values:
print(value + ",", end="")
#return values
entryGUI(3, 3)