Pysimplegui: [質問]入力ボックスの制御テキスト

作成日 2019年01月27日  ·  6コメント  ·  ソース: PySimpleGUI/PySimpleGUI

ユーザーがテキストに数字以外の文字を導入しないようにするために、入力ボックスにイベントを生成したいのですが(数値のみが許可されます)、なんとかできます。 しかし、ここで、書き込むことができる文字数を制限したいと思います。このため、古い文字列を、イベントが生成されたときに存在する文字列と比較する必要があります。 イベントが生成される前に前の入力文字列へのアクセスを許可するのは良い考えではありませんか? イベントを生成するオブジェクトを確認すると、「default_text」属性しか表示されません。 実際、実際のテキストがどこにあるのかわかりません(値が不足しています[キー])

全てのコメント6件

PySimpleGUIは、以前に要素に表示された値の履歴を保存しません。 これは、アプリケーションが実行する必要があることです。 読み取り後に入力の値を保存し、それを使用して次の読み取りがいつ発生するかを比較します。

書き込める文字数を制限したい

入力の「値」を取得して長さを確認できないのはなぜですか? 「長すぎる」場合は、入力フィールドを自分の値から最後に入力された文字を引いた値に設定します。

これが私が意味することです...このプログラムは入力フィールドに5文字しか入力できません

import PySimpleGUI as sg

layout = [
            [sg.Input(do_not_clear=True, enable_events=True, key='_IN_')],
            [sg.Button('Exit')]
         ]

window = sg.Window('Window Title').Layout(layout)

while True:             # Event Loop
    event, values = window.Read()
    print(event, values)
    if event is None or event == 'Exit':
        break
    if len(values['_IN_']) > 5:
        window.Element('_IN_').Update(values['_IN_'][:-1])

window.Close()

この問題は、私が聞きたかったものに非常に近いものです。int/ floatエントリの数だけに制限するにはどうすればよいですか?

import PySimpleGUI as sg

layout = [  [sg.Text('My Window')],
            [sg.Input(key='-IN-', enable_events=True)],
            [sg.Button('Go'), sg.Button('Exit')]  ]

window = sg.Window('Window Title', layout)

while True:             # Event Loop
    event, values = window.read()
    if event in (None, 'Exit'):
        break
    if event == '-IN-' and values['-IN-'] and values['-IN-'][-1] not in ('0123456789.'):
        window['-IN-'].update(values['-IN-'][:-1])
window.close()

そこに行きます....なぜこれがまだ開いているのかわからないので、フラグを立ててくれてありがとう。
[編集-編集してすみません、私は間違いを犯し続けます]

ありがとうございました ! :)

このページは役に立ちましたか?
0 / 5 - 0 評価