wxpython: threading gui -> usando manipulador de eventos personalizado
-
23-09-2019 - |
Pergunta
Estou tentando aprender a executar um tópico do aplicativo GUI principal para fazer minha porta serial enviando/recebendo, mantendo minha GUI viva. Minhas melhores tentativas de pesquisas me levaram ao WXPYTHON WIKI ON: http://wiki.wxpython.org/longrunningtasks que fornece vários exemplos. Eu decidi aprender o primeiro exemplo, envolvendo o início de um tópico do trabalhador quando o botão específico é selecionado.
Estou tendo problemas para entender a definição de eventos personalizados:
def EVT_RESULT(win, func):
"""Define Result Event."""
win.Connect(-1, -1, EVT_RESULT_ID, func)
class ResultEvent(wx.PyEvent):
"""Simple event to carry arbitrary result data."""
def __init__(self, data):
"""Init Result Event."""
wx.PyEvent.__init__(self)
self.SetEventType(EVT_RESULT_ID)
self.data = data
Principalmente o
def EVT_RESULT(win, func):
"""Define Result Event."""
win.Connect(-1, -1, EVT_RESULT_ID, func)
Eu acho que o EVT_RESULT é colocado fora das aulas para torná-lo capaz de chamar as duas classes (tornando-o global?)
E .. o aplicativo GUI principal monitora o progresso do fio via:
# Set up event handler for any worker thread results
EVT_RESULT(self,self.OnResult)
Também noto que em muitos exemplos, quando o escritor usa
from wx import *
Eles simplesmente ligam as coisas por
EVT_SOME_NEW_EVENT(self, self.handler)
em oposição a
wx.Bind(EVT_SOME_NEW_EVENT, self.handler)
O que não me ajuda a entender mais rápido. Obrigado,
Solução
O conteúdo foi devidamente indexado após você fez suas alterações?Dependendo de suas configurações de versão e ambiente, as novas permissões podem não entrar em vigor nos resultados da pesquisa até que o conteúdo seja rastreado.
Outras dicas
Esse é o estilo antigo de definir eventos personalizados. Ver O Guia de Migração Para maiores informações.
Retirado do Guia de Migração:
Se você criar seus próprios tipos de eventos personalizados e funções EVT_*, e deseja usá -los com o método de ligação acima, então você deve alterar seu EVT_* para ser uma instância de
wx.PyEventBinder
em vez de uma função. Por exemplo, se você costumava ter algo assim:myCustomEventType = wxNewEventType() def EVT_MY_CUSTOM_EVENT(win, id, func): win.Connect(id, -1, myCustomEventType, func)
Mude assim:
myCustomEventType = wx.NewEventType() EVT_MY_CUSTOM_EVENT = wx.PyEventBinder(myCustomEventType, 1)
Aqui está outra postagem que fiz com alguns programas de exemplo que fazem exatamente o que você está procurando.
Uma opção é enviar o email Ativar a biblioteca de documentos onde você deseja enviar o arquivo e, em seguida, use este endereço de e-mail para enviar um e-mail para o servidor SharePoint e ele armazenará o relatório na biblioteca de documentos.Eu usei essa técnica no passado com um servidor SSRS não no modo integrado para entregar relatórios no cronograma para o SharePoint.
Isso pressupõe que o seu farm do SharePoint tenha um e-mail recebido configurado.