日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

wxpython控件绑定事件_wxPython事件处理

發布時間:2025/3/15 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wxpython控件绑定事件_wxPython事件处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與以順序方式執行的控制臺模式應用程序不同,基于GUI的應用程序是事件驅動的。函數或方法響應用戶的操作來執行,例如單擊按鈕,從集合或鼠標單擊等中選擇一個項目,稱為事件。

有關在應用程序運行時發生的事件的數據存儲為從 wx.Event

派生的子類的對象。顯示控件(如Button)是特定類型的事件源,并生成與其關聯的Event類的對象。例如,點擊一個按鈕會發出一個wx.CommandEvent。該事件數據被分派到程序中的事件處理程序方法。wxPython有許多預定義的事件綁定器。一個

事件粘合劑 封裝了特定微件(對照),其相關聯的事件類型和事件處理方法之間的關系。

例如,要在按鈕的單擊事件中調用該程序的 OnClick()方法 ,以下語句是必需的 -

self.b1.Bind(EVT_BUTTON, OnClick)

Bind()方法

由wx.EvtHandler類中的所有顯示對象繼承。這里的EVT_.BUTTON是活頁夾,它將按鈕點擊事件關聯到OnClick()方法。

在以下示例中,通過拖動頂層窗口(本例中為wx.Frame對象 ) 導致的 MoveEvent 使用wx.EVT_MOVE 聯 編

程序連接到 OnMove()方法 。該代碼顯示一個窗口。如果使用鼠標移動它,則它的瞬時坐標顯示在控制臺上。

import wx

class Example(wx.Frame):

def __init__(self, *args, **kw):

super(Example, self).__init__(*args, **kw)

self.InitUI()

def InitUI(self):

self.Bind(wx.EVT_MOVE, self.OnMove)

self.SetSize((250, 180))

self.SetTitle('Move event')

self.Centre()

self.Show(True)

def OnMove(self, e):

x, y = e.GetPosition()

print "current window position x = ",x," y= ",y

ex = wx.App()

Example(None)

ex.MainLoop()

上面的代碼產生以下輸出 -

當前窗口位置x = 562 y = 309

當前窗口位置x = 562 y = 309

當前窗口位置x = 326 y = 304

當前窗口位置x = 384 y = 240

當前窗口位置x = 173 y = 408

當前窗口位置x = 226 y = 30

當前窗口位置x = 481 y = 80

下表中列出了一些從wx.Event繼承的子類 -

____下面給出了wx.Event最常用的事件

SN

活動和說明

1

**wxKeyEvent**

Occurs when a key is presses or released

2

**wxPaintEvent**

Is generated whenever contents of the window needs to be redrawn

3

**wxMouseEvent**

Contains data about any event due to mouse activity like mouse button pressed

or dragged

4

**wxScrollEvent**

Associated with scrollable controls like wxScrollbar and wxSlider

5

**wxCommandEvent**

Contains event data originating from many widgets such as button, dialogs,

clipboard, etc.

6

**wxMenuEvent**

Different menu-related events excluding menu command button click

7

**wxColourPickerEvent**

wxColourPickerCtrl generated events

8

**wxDirFilePickerEvent**

Events generated by FileDialog and DirDialog

wxPython中的事件有兩種類型。基本事件和命令事件。基本事件停留在它所源自的窗口的本地。大多數wxWidgets生成命令事件。甲 命令事件

可以傳播到窗口或窗口,這是在類層次結構的源窗口上方。

以下是事件傳播的一個簡單示例。完整的代碼是 -

import wx

class MyPanel(wx.Panel):

def __init__(self, parent):

super(MyPanel, self).__init__(parent)

b = wx.Button(self, label = 'Btn', pos = (100,100))

b.Bind(wx.EVT_BUTTON, self.btnclk)

self.Bind(wx.EVT_BUTTON, self.OnButtonClicked)

def OnButtonClicked(self, e):

print 'Panel received click event. propagated to Frame class'

e.Skip()

def btnclk(self,e):

print "Button received click event. propagated to Panel class"

e.Skip()

class Example(wx.Frame):

def __init__(self,parent):

super(Example, self).__init__(parent)

self.InitUI()

def InitUI(self):

mpnl = MyPanel(self)

self.Bind(wx.EVT_BUTTON, self.OnButtonClicked)

self.SetTitle('Event propagation demo')

self.Centre()

self.Show(True)

def OnButtonClicked(self, e):

print 'click event received by frame class'

e.Skip()

ex = wx.App()

Example(None)

ex.MainLoop()

在上面的代碼中,有兩個類。 MyPanel ,一個wx.Panel子類,以及一個wx.Frame子類,它是該程序的頂級窗口。一個按鈕放置在面板上。

這個Button對象綁定到一個事件處理函數btnclk(),它將它傳播到父類(在這種情況下是MyPanel)。按鈕點擊會生成一個

CommandEvent ,它可以通過Skip()方法傳播給它的父級。

MyPanel類對象還將接收到的事件綁定到另一個處理程序OnButtonClicked()。這個函數反過來傳遞給它的父類Example類。上面的代碼產生以下輸出

Button received click event. Propagated to Panel class.

Panel received click event. Propagated to Frame class.

Click event received by frame class.

總結

以上是生活随笔為你收集整理的wxpython控件绑定事件_wxPython事件处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。