2

ENTER で反応するように wxPython を作成しようとするとTextCtrl、アサーション エラーが発生します。

self.fileNameInput = wx.TextCtrl (self, style=wx.TE_PROCESS_ENTER)
self.fileNameInput.Bind (wx.wxEVT_COMMAND_TEXT_ENTER, self.onRename)

でアサーション エラーで終了しますBind:

assert isinstance(event, wx.PyEventBinder)
AssertionError

wx.wxEVT_COMMAND_TEXT_ENTERそれがインスタンスではなく、数であることは不思議ではありません。

Python 2 と 3 の間のイベントの変更についてのコメントを読みました - ライブラリのバージョンを混在させましたか?

4

2 に答える 2

1

ということwx.EVT_TEXT_ENTERですか?

>>> import wx
>>> wx.wxEVT_COMMAND_TEXT_ENTER
10165
>>> wx.EVT_TEXT_ENTER
<wx._core.PyEventBinder object at 0x000000000321C8D0>

例:

import wx

class MyWindow(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None)
        self.fileNameInput = wx.TextCtrl (self, style=wx.TE_PROCESS_ENTER)
        self.fileNameInput.Bind(wx.EVT_TEXT_ENTER, self.onRename)
    def onRename(self, e):
        print('ENTER')

app =wx.PySimpleApp()
win = MyWindow()
win.Show()
app.MainLoop()
于 2013-12-17T15:43:48.877 に答える
0

前の回答を補完するものとして、これはどのEVTでも機能するものです...同様の問題があり、イベントの正確な名前を見つけるのに時間がかかりました。ソースコードを確認すると、ファイル wx\core.py にほとんどの変換が含まれています。私の場合は次のとおりです。

EVT_LISTBOX_DCLICK = wx.PyEventBinder( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, 1)

あなたの場合、ファイル wx\_controls.py にあります。

EVT_TEXT_ENTER  = wx.PyEventBinder( wxEVT_COMMAND_TEXT_ENTER, 1)
于 2016-02-01T14:18:45.350 に答える