2

私は 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)
4

1 に答える 1