本文整理汇总了Python中AnyQt.QtCore.QCoreApplication类的典型用法代码示例。如果您正苦于以下问题:Python QCoreApplication类的具体用法?Python QCoreApplication怎么用?Python QCoreApplication使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QCoreApplication类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: end
def end(self):
self.cleanup()
# Remove the help tip set in mousePressEvent
self.macro = None
helpevent = QuickHelpTipEvent("", "")
QCoreApplication.postEvent(self.document, helpevent)
UserInteraction.end(self)
示例2: test_methodinvoke
def test_methodinvoke(self):
executor = ThreadExecutor()
state = [None, None]
class StateSetter(QObject):
@Slot(object)
def set_state(self, value):
state[0] = value
state[1] = QThread.currentThread()
def func(callback):
callback(QThread.currentThread())
obj = StateSetter()
f1 = executor.submit(func, methodinvoke(obj, "set_state", (object,)))
f1.result()
# So invoked method can be called
QCoreApplication.processEvents()
self.assertIs(state[1], QThread.currentThread(),
"set_state was called from the wrong thread")
self.assertIsNot(state[0], QThread.currentThread(),
"set_state was invoked in the main thread")
executor.shutdown(wait=True)
示例3: mousePressEvent
def mousePressEvent(self, event):
anchor_item = self.scene.item_at(event.scenePos(),
items.NodeAnchorItem,
buttons=Qt.LeftButton)
if anchor_item and event.button() == Qt.LeftButton:
# Start a new link starting at item
self.from_item = anchor_item.parentNodeItem()
if isinstance(anchor_item, items.SourceAnchorItem):
self.direction = NewLinkAction.FROM_SOURCE
self.source_item = self.from_item
else:
self.direction = NewLinkAction.FROM_SINK
self.sink_item = self.from_item
event.accept()
helpevent = QuickHelpTipEvent(
self.tr("Create a new link"),
self.tr('<h3>Create new link</h3>'
'<p>Drag a link to an existing node or release on '
'an empty spot to create a new node.</p>'
'<p>Hold Shift when releasing the mouse button to '
'edit connections.</p>'
# '<a href="help://orange-canvas/create-new-links">'
# 'More ...</a>'
)
)
QCoreApplication.postEvent(self.document, helpevent)
return True
else:
# Whoever put us in charge did not know what he was doing.
self.cancel(self.ErrorReason)
return False
示例4: __setitem__
def __setitem__(self, key, value):
"""
Set the setting for key.
"""
if not isinstance(key, str):
raise TypeError(key)
fullkey = self.__key(key)
value_type = None
if fullkey in self.__defaults:
value_type = self.__defaults[fullkey].value_type
if not isinstance(value, value_type):
if not isinstance(value, value_type):
raise TypeError("Expected {0!r} got {1!r}".format(
value_type.__name__,
type(value).__name__)
)
if key in self:
oldValue = self.get(key)
etype = SettingChangedEvent.SettingChanged
else:
oldValue = None
etype = SettingChangedEvent.SettingAdded
self.__setValue(fullkey, value, value_type)
QCoreApplication.sendEvent(
self, SettingChangedEvent(etype, key, value, oldValue)
)
示例5: __delitem__
def __delitem__(self, key):
"""
Delete the setting for key. If key is a group remove the
whole group.
.. note:: defaults cannot be deleted they are instead reverted
to their original state.
"""
if key not in self:
raise KeyError(key)
if self.isgroup(key):
group = self.group(key)
for key in group:
del group[key]
else:
fullkey = self.__key(key)
oldValue = self.get(key)
if self.__store.contains(fullkey):
self.__store.remove(fullkey)
newValue = None
if fullkey in self.__defaults:
newValue = self.__defaults[fullkey].default_value
etype = SettingChangedEvent.SettingChanged
else:
etype = SettingChangedEvent.SettingRemoved
QCoreApplication.sendEvent(
self, SettingChangedEvent(etype, key, newValue, oldValue)
)
示例6: add_link
def add_link(self, link):
"""
Add a `link` to the scheme.
Parameters
----------
link : :class:`.SchemeLink`
An initialized link instance to add to the scheme.
"""
check_type(link, SchemeLink)
self.check_connect(link)
self.__links.append(link)
ev = events.LinkEvent(events.LinkEvent.LinkAdded, link)
QCoreApplication.sendEvent(self, ev)
log.info("Added link %r (%r) -> %r (%r) to scheme %r." % \
(link.source_node.title, link.source_channel.name,
link.sink_node.title, link.sink_channel.name,
self.title)
)
self.link_added.emit(link)
示例7: TestTask
class TestTask(unittest.TestCase):
def setUp(self):
self.app = QCoreApplication([])
def test_task(self):
results = []
task = Task(function=QThread.currentThread)
task.resultReady.connect(results.append)
task.start()
self.app.processEvents()
self.assertSequenceEqual(results, [QThread.currentThread()])
results = []
thread = QThread()
thread.start()
task = Task(function=QThread.currentThread)
task.moveToThread(thread)
self.assertIsNot(task.thread(), QThread.currentThread())
self.assertIs(task.thread(), thread)
task.resultReady.connect(results.append, Qt.DirectConnection)
task.start()
f = task.future()
self.assertIsNot(f.result(3), QThread.currentThread())
self.assertIs(f.result(3), results[-1])
def test_executor(self):
executor = ThreadExecutor()
f = executor.submit(QThread.currentThread)
self.assertIsNot(f.result(3), QThread.currentThread())
f = executor.submit(lambda: 1 / 0)
with self.assertRaises(ZeroDivisionError):
f.result()
results = []
task = Task(function=QThread.currentThread)
task.resultReady.connect(results.append, Qt.DirectConnection)
f = executor.submit(task)
self.assertIsNot(f.result(3), QThread.currentThread())
executor.shutdown()
示例8: CoreAppTestCase
class CoreAppTestCase(unittest.TestCase):
def setUp(self):
self.app = QCoreApplication.instance()
if self.app is None:
self.app = QCoreApplication([])
def tearDown(self):
self.app.processEvents()
del self.app
示例9: _stateChanged
def _stateChanged(self, future, state):
"""
The `future` state has changed (called by :class:`Future`).
"""
ev = StateChangedEvent(state)
if self.thread() is QThread.currentThread():
QCoreApplication.sendEvent(self, ev)
else:
QCoreApplication.postEvent(self, ev)
示例10: __add_widget_for_node
def __add_widget_for_node(self, node):
# type: (SchemeNode) -> None
item = self.__item_for_node.get(node)
if item is not None:
return
if node not in self.__workflow.nodes:
return
if node in self.__init_queue:
self.__init_queue.remove(node)
item = Item(node, None, -1)
# Insert on the node -> item mapping.
self.__item_for_node[node] = item
log.debug("Creating widget for node %s", node)
try:
w = self.create_widget_for_node(node)
except Exception: # pylint: disable=broad-except
log.critical("", exc_info=True)
lines = traceback.format_exception(*sys.exc_info())
text = "".join(lines)
errorwidget = QLabel(
textInteractionFlags=Qt.TextSelectableByMouse, wordWrap=True,
objectName="widgetmanager-error-placeholder",
text="<pre>" + escape(text) + "</pre>"
)
item.errorwidget = errorwidget
node.set_state_message(UserMessage(text, UserMessage.Error, 0))
return
else:
item.widget = w
self.__item_for_widget[w] = item
self.__set_float_on_top_flag(w)
w.installEventFilter(self.__activation_monitor)
# Up shortcut (activate/open parent)
up_shortcut = QShortcut(
QKeySequence(Qt.ControlModifier + Qt.Key_Up), w)
up_shortcut.activated.connect(self.__on_activate_parent)
# send all the post creation notification events
workflow = self.__workflow
assert workflow is not None
inputs = workflow.find_links(sink_node=node)
for link in inputs:
ev = LinkEvent(LinkEvent.InputLinkAdded, link)
QCoreApplication.sendEvent(w, ev)
outputs = workflow.find_links(source_node=node)
for link in outputs:
ev = LinkEvent(LinkEvent.OutputLinkAdded, link)
QCoreApplication.sendEvent(w, ev)
self.widget_for_node_added.emit(node, w)
示例11: test_threadsafe
def test_threadsafe(self):
output = OutputView()
output.resize(500, 300)
output.show()
blue_formater = output.formated(color=Qt.blue)
red_formater = output.formated(color=Qt.red)
correct = []
def check_thread(*args):
correct.append(QThread.currentThread() == self.app.thread())
blue = TextStream()
blue.stream.connect(blue_formater.write)
blue.stream.connect(check_thread)
red = TextStream()
red.stream.connect(red_formater.write)
red.stream.connect(check_thread)
def printer(i):
if i % 12 == 0:
fizzbuz = "fizzbuz"
elif i % 4 == 0:
fizzbuz = "buz"
elif i % 3 == 0:
fizzbuz = "fizz"
else:
fizzbuz = str(i)
if i % 2:
writer = blue
else:
writer = red
writer.write("Greetings from thread {0}. "
"This is {1}\n".format(current_thread().name,
fizzbuz))
pool = multiprocessing.pool.ThreadPool(100)
res = pool.map_async(printer, range(10000))
self.app.exec_()
res.wait()
# force all pending enqueued emits
QCoreApplication.sendPostedEvents(blue, QEvent.MetaCall)
QCoreApplication.sendPostedEvents(red, QEvent.MetaCall)
self.app.processEvents()
self.assertTrue(all(correct))
self.assertEqual(len(correct), 10000)
示例12: __on_link_removed
def __on_link_removed(self, link): # type: (SchemeLink) -> None
assert link.source_node in self.__workflow.nodes
assert link.sink_node in self.__workflow.nodes
source = self.__item_for_widget.get(link.source_node)
sink = self.__item_for_widget.get(link.sink_node)
# notify the node gui of an removed link
if source is not None:
ev = LinkEvent(LinkEvent.OutputLinkRemoved, link)
QCoreApplication.sendEvent(source.widget, ev)
if sink is not None:
ev = LinkEvent(LinkEvent.InputLinkRemoved, link)
QCoreApplication.sendEvent(sink.widget, ev)
示例13: flush
def flush(self):
"""
Flush all pending signal emits currently enqueued.
Must only ever be called from the thread this object lives in
(:func:`QObject.thread()`).
"""
if QThread.currentThread() is not self.thread():
raise RuntimeError("`flush()` called from a wrong thread.")
# NOTE: QEvent.MetaCall is the event implementing the
# `Qt.QueuedConnection` method invocation.
QCoreApplication.sendPostedEvents(self, QEvent.MetaCall)
示例14: remove_annotation
def remove_annotation(self, annotation):
"""
Remove the `annotation` instance from the scheme.
"""
check_arg(annotation in self.__annotations,
"Annotation is not in the scheme.")
self.__annotations.remove(annotation)
ev = events.AnnotationEvent(events.AnnotationEvent.AnnotationRemoved,
annotation)
QCoreApplication.sendEvent(self, ev)
self.annotation_removed.emit(annotation)
示例15: start
def start(self):
self.document.view().setCursor(Qt.CrossCursor)
helpevent = QuickHelpTipEvent(
self.tr("Click and drag to create a new arrow"),
self.tr('<h3>New arrow annotation</h3>'
'<p>Click and drag to create a new arrow annotation.</p>'
# '<a href="help://orange-canvas/arrow-annotations>'
# 'More ...</a>'
)
)
QCoreApplication.postEvent(self.document, helpevent)
UserInteraction.start(self)