【问题标题】:Unable to capture double click event on wxDataViewListCtrl无法捕获 wxDataViewListCtrl 上的双击事件
【发布时间】:2018-11-02 08:00:45
【问题描述】:

大家好,我正在尝试在 Python 3.X 上使用 wxPython 学习 GUI 编程

我正在尝试捕获双击 wxDataViewListCtrl。为了测试,我添加了一个按钮和一个数据视图列表,并为这两个对象设置了双击事件处理程序。在下面给出的脚本中显示相同

当我双击按钮控件时,我可以在屏幕上看到打印语句,但是当我双击数据视图列表时,事件处理程序没有被执行

没有一个 wxWindow 事件对 wxDataViewListCtrl 起作用。我做错了什么?

import wx
import wx.xrc
import wx.dataview

class MyFrame1 ( wx.Frame ):

    def __init__( self, parent ):
        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

        self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )

        gSizer1 = wx.GridSizer( 2, 1, 0, 0 )

        self.m_button1 = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer1.Add( self.m_button1, 0, wx.ALL, 5 )

        self.m_dataViewListCtrl2 = wx.dataview.DataViewListCtrl( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer1.Add( self.m_dataViewListCtrl2, 0, wx.ALL, 5 )


        self.SetSizer( gSizer1 )
        self.Layout()

        self.Centre( wx.BOTH )

        # Connect Events
        self.m_button1.Bind( wx.EVT_LEFT_DCLICK, self.button_double_click )
        self.m_dataViewListCtrl2.Bind( wx.EVT_LEFT_DCLICK, self.listview_double_click )

    def __del__( self ):
        pass    

    # Virtual event handlers, overide them in your derived class
    def button_double_click( self, event ):
        print("button_double_click")
        event.Skip()

    def listview_double_click( self, event ):
        print("listview_double_click")
        event.Skip()

app = wx.App()
frame = MyFrame1(None)
frame.Show()
app.MainLoop()

【问题讨论】:

    标签: python-3.x wxpython wxwidgets


    【解决方案1】:

    一般来说,您不应该能够处理来自本机控件的单击或双击等低级事件,而是应该使用控件特定的事件。在这种具体情况下,您可能想改用wxEVT_DATAVIEW_ITEM_ACTIVATED

    【讨论】:

    • 那么为什么双击在也是本机控件的按钮中起作用
    • “不保证工作”与“保证不工作”不同。处理按钮的双击事件也是一个坏主意,但是,是的,实际上您可以(当前)获取它们。这很可能在未来发生变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2021-11-08
    • 2011-01-06
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多