簡體   English   中英

如何觸發和偵聽python中的事件?

[英]How can I trigger and listen for events in python?

如何觸發和偵聽python中的事件?

我需要一個實際的例子。

謝謝

更新資料

#add Isosurface button
def addIso():
    #trigger event

self.addButton = tk.Button(self.leftFrame, text="Add", command=addIso) #.grid(column=3, row=1)
self.addButton.pack(in_=self.leftFrame, side="right", pady=2)

根據您對一些現有答案的評論,我認為您想要的是pubsub模塊之類的東西。 在Tkinter的上下文中,事件是單一目的的-一個事件在一個小部件上觸發,並且一些處理程序處理該事件(盡管可能涉及多個處理程序)。

聽起來,您想要的更多的是廣播模式-您的小部件說“嘿,用戶做了些事情”,任何其他模塊都可以注冊興趣並獲取通知,而無需特別知道是什么小部件或低級事件導致了這種情況。

我在支持插件的應用程序中使用它。 插件可以說類似“用戶打開新文件時調用我的'open'方法”之類的內容。 他們不在乎用戶是如何做到的(即:無論是從“文件”菜單,工具欄圖標還是快捷方式),僅是它發生了。

在這種情況下,您將配置按鈕以調用特定方法,通常在創建按鈕的同一模塊中。 然后,該方法將使用pubsub模塊發布其他模塊偵聽並響應的某種通用事件。

TKinter對象有一個綁定函數,它帶有兩個參數:第一個是表示您要偵聽的事件名稱的字符串(在這種情況下,可能是“”),第二個是將觸發事件作為參數的方法。參數。

例:

def addButton_click(event):
    print 'button clicked'
self.addButton.bind("<Button-1>", addButton_click)

我相信即使從另一個類中使用它也仍然可以工作:

class X:
    def addButton_click(self, event):
        print 'button clicked'
...
inst = X()
self.addButton.bind("<Button-1>", inst.addButton_click)

像這樣:

#add Isosurface button
def addIso(event):
    #trigger event

self.addButton = tk.Button(self.leftFrame, text="Add") #.grid(column=3, row=1)
self.addButton.pack(in_=self.leftFrame, side="right", pady=2)
self.addButton.bind("<Button-1>", addIso)

來自: http : //www.bembry.org/technology/python/notes/tkinter_3.php

如果將IronPython與Windows Presentation Foundation(WPF)一起使用,則可以在Ironpython \\ Tutorial目錄中找到pyevent.py。 這使您可以編寫如下內容:

import clr
clr.AddReferenceByPartialName("PresentationFramework")
import System
import pyevent

class myclass(object):
    def __init__(self):
        self._PropertyChanged, self._OnPropertyChanged = pyevent.make_event()
        self.initialize()

    def add_PropertyChanged(self, handler):
        self._PropertyChanged += handler

    def remove_PropertyChanged(self, handler):
        self._PropertyChanged -= handler

    def raiseAPropertyChangedEvent(self, name):
        self._OnPropertyChanged(self, System.ComponentModel.PropertyChangedEventArgs(name))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM