wxpython: потоковой графический интерфейс -> использование пользовательского обработчика событий
-
23-09-2019 - |
Вопрос
Я пытаюсь научиться запустить ветку из основного приложения GUI, чтобы сделать мой серийный порт, отправляя/получая, сохраняя при этом мой графический интерфейс. Мои лучшие попытки Googtling принесли меня на Wxpython Wiki на: http://wiki.wxpython.org/longrunningtasks который дает несколько примеров. Я убедился в изучении первого примера, включающего запуск рабочего потока при выборе конкретной кнопки.
У меня возникают проблемы с пониманием определения на заказ:
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
Прежде всего
def EVT_RESULT(win, func):
"""Define Result Event."""
win.Connect(-1, -1, EVT_RESULT_ID, func)
Я думаю, что evt_result помещается за пределы классов, чтобы сделать его вызовом по обоим классам (делая его глобальным?)
И .. основное приложение GUI контролирует прогресс потока через:
# Set up event handler for any worker thread results
EVT_RESULT(self,self.OnResult)
Я также замечаю, что во многих примерах, когда писатель использует
from wx import *
Они просто связывают вещи
EVT_SOME_NEW_EVENT(self, self.handler)
в отличие от
wx.Bind(EVT_SOME_NEW_EVENT, self.handler)
Что не помогает мне понять это быстрее. Спасибо,
Решение
содержимое было правильно повторно проиндексировано после того, как вы внесли изменения?В зависимости от вашей версии и настроек окружающей среды новые разрешения могут не вступать в силу в результатах поиска, пока контент не пройден.
Другие советы
Это старый стиль определения пользовательских событий. Видеть Руководство по миграции Чтобы получить больше информации.
Взято из руководства по миграции:
Если вы создаете свои собственные типы событий и функции EVT_*, и вы хотите иметь возможность использовать их с помощью метода Bind выше, вам следует изменить свой EVT_* на экземпляр
wx.PyEventBinder
вместо функции. Например, если у вас было что -то вроде этого:myCustomEventType = wxNewEventType() def EVT_MY_CUSTOM_EVENT(win, id, func): win.Connect(id, -1, myCustomEventType, func)
Изменить это так:
myCustomEventType = wx.NewEventType() EVT_MY_CUSTOM_EVENT = wx.PyEventBinder(myCustomEventType, 1)
Вот еще один пост Что я сделал с несколькими примерами программ, которые делают именно то, что вы ищете.
Один вариант - по электронной почте Включить библиотеку документов, в которую вы хотите отправить файл, затем используйте этот адрес электронной почты для электронной почты SharePoint Server, и он будет хранить отчет в библиотеке документов.Я использовал эту технику в прошлом с сервером SSRS не в интегрированном режиме для доставки отчетов о расписании на SharePoint.
Это предполагает, что ваша ферма SharePoint имеет настроенную настроенную электронную почту.