ホームページ  >  記事  >  バックエンド開発  >  wxpythonの無効なTextctrlキャリッジリターンイベントの解決策

wxpythonの無効なTextctrlキャリッジリターンイベントの解決策

WBOY
WBOYオリジナル
2016-08-04 08:55:382305ブラウズ

この記事の例では、wxpython での無効な Textctrl キャリッジ リターン イベントの解決策について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

今日、wxptyhon の Textctrl コントロールを使用してクライアントを開発しているときに問題が発生しました。HTML フォームのロジックによれば、Textctrl で Enter キーを押してクエリを送信する必要がありますが、wxpython の Textctrl を押すと実際にはタブのようにジャンプします。次のコントロールに移動します。この場合、クエリを完了するには、ボタンをマウスでクリックするか、ボタンを 2 回以上押す必要があります。

Googleで調べましたが、答えはありませんでしたが、いくつかの有益な情報を入手しました:

TextCtrl がサポートするイベント タイプ:

EVT_TEXT: このイベントは、ユーザー入力またはプログラム内での SetValue() の使用によりテキストが変更されたときに生成されます。

EVT_TEXT_ENTER: このイベントは、ユーザーが wx.TE_PROCESS_ENTER スタイルのテキスト コントロールで Enter キーを押したときに生成されます。

EVT_TEXT_URL: Windows システムで、wx.TE_RICH または wx.TE_RICH2 スタイルが設定されており、wx.TE_AUTO_URL スタイルも設定されている場合、テキスト コントロール内の URL でマウス イベントが発生すると、イベントがトリガーされます。

EVT_TEXT_MAXLEN: SetMaxLength() を使用してコントロールの最大長が指定されている場合、ユーザーがそれより長い文字列を入力しようとすると、このイベントがトリガーされます。

たとえば、この時点でユーザーに警告メッセージを表示します。

wxptyon デモの例を使用して、最終的に解決策を見つけました:

1. インスタンスを宣言するときは、次のような style 属性を追加する必要があります。

リーリー

2.TextCtrlのEnterイベントをバインドする

最初はボタン風のバインド方法を使っていましたが、うまくいきませんでした


コードをコピーします コードは次のとおりです:self.element_panel.searchInput.Bind(wx.EVT_TEXT_ENTER, self.onSearch)
正しい宣言方法は次のとおりです:


コードをコピーします コードは次のとおりです:self.Bind(wx.EVT_TEXT_ENTER, self.onSearch, self.element_panel.searchInput)
次に、フレームまたはパネルで対応するメソッドを宣言します。

さらに Python 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください:「Python データ構造とアルゴリズムのチュートリアル」、「Python ソケット プログラミング スキルの概要」、「Python 関数の使用スキルの概要」、Python 文字列操作のスキル概要」、「Python の入門と上級のための古典的なチュートリアル」、「Python ファイルとディレクトリの操作スキルの概要」

この記事が Python プログラミングのすべての人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。