QTimer.singleShot()
タイマーを停止することはできますか? (私はQTimer
オブジェクトのstop()
機能を使用するために を教えないでください - 私は本当に したい その時間が経過する前に、静的関数QTimer.singleShot()
を停止させることができるかどうかを知る)は、第2のQTimer.singleShot()
どうなりQTimer.singleShot()タイマーを停止するを最初に経過した の前に開始されますか?最初のものが殺されたのですか、あるいはもう1つ目のものが でしたか? 最初の1が経過する前に、第2 QTimer.singleShot()が起動された場合はどうなり
1
A
答えて
0
Q.?最初の人が殺されたのですか、それとももう1人ですか? が代わりに開始されましたか?
- すべてのタイマーは独立して動作するので、2つの連続して開始された場合、両方が完了するまで実行されます。
を - (私はQTimerオブジェクトの停止()関数を使用する を教えないでください その時間が経過する前に、私は本当に したい場合は、静的な機能QTimer.singleShot(知っている)を停止することができます)Q. QTimer.singleShot()タイマーを停止することはできますか?
静的関数はタイマーを処理する内部オブジェクトを作成するので、停止するための公開APIはありません。しかし、この制限を回避することができる
QAbstractEventDispatcher
を含むハックがあります。実装の詳細に依存しているため、これを実動コードで使用することはお勧めしません。しかし、あなたはそれが可能であったかどうかを尋ねたので、ここでのデモです:from PyQt4 import QtCore, QtGui class Window(QtGui.QWidget): def __init__(self): super(Window, self).__init__() self.button = QtGui.QPushButton('Start', self) self.button.clicked.connect(self.handleTimer) self.edit = QtGui.QLineEdit(self) self.edit.setReadOnly(True) layout = QtGui.QVBoxLayout(self) layout.addWidget(self.button) layout.addWidget(self.edit) self._timer = None def handleTimer(self): dispatcher = QtCore.QAbstractEventDispatcher.instance() if self._timer is None: self.edit.clear() self.button.setText('Stop') QtCore.QTimer.singleShot(3000, self.handleTimeout) self._timer = dispatcher.children()[-1] else: dispatcher = QtCore.QAbstractEventDispatcher.instance() dispatcher.unregisterTimers(self._timer) self.button.setText('Start') self._timer = None def handleTimeout(self): self._timer = None self.button.setText('Start') self.edit.setText('timeout') if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) window = Window() window.setGeometry(500, 150, 300, 100) window.show() sys.exit(app.exec_())
関連する問題
- 1. C#タイマー停止後のイベントハンドラーの停止
- 2. AS 3.0停止タイマー
- 3. タイマーを停止せずにTimerTaskを停止する
- 4. コールバックメソッドでタイマーを停止
- 5. ボタンでタイマーを停止する
- 6. ホバー上でタイマーを停止する
- 7. 仮想キーでタイマーを停止する
- 8. componentWillUnmountでタイマーを停止する
- 9. Javascriptタイマーを一時停止する
- 10. タイマーからNSRunLoopを停止する
- 11. @Scheduledアノテーションを使用する停止タイマー
- 12. タイマーの実行中にユーザーがアプリを停止したときにタイマーを停止する場所
- 13. Javaでタイマーを一時停止/再開して停止するには?
- 14. スイングタイマーの問題 - タイマーを停止
- 15. タイマーの起動と停止PHP
- 16. GUIタイマーが停止しない
- 17. C#タイマーの集中停止/開始
- 18. 実行中のすべてのタイマーを停止する
- 19. 一定時間後にタイマーを停止する
- 20. シャットダウン時にスケジュールされたタイマーを停止する
- 21. 特定のAjaxレスポンスでタイマーを停止する
- 22. ASP.NET Ajaxでタイマーを停止して開始する
- 23. デバッグ中にタイマーを停止する方法
- 24. setTimeout()タイマーを停止するのに助けが必要
- 25. UWP NetworkConnectionChangedタイマーを開始および停止するイベント
- 26. 他のアクティビティからアクティビティのタイマーを停止する方法
- 27. Androidでhandler.postDelayed()タイマーを一時停止する方法
- 28. 指定時間後にタイマーを停止する方法
- 29. タイマーを停止して再起動する
- 30. C:sigactionタイマーを一時停止する方法
あなたは[ヘールトVancompernolle](http://www.riverbankcomputing.com/pipermail/pyqt/2009-February/です022023.html)私は自分の€5を請求します。 – ekhumoro
[QtCore.QTimerをPyQt4で1回だけ殺すにはどうすればいいですか?](http://stackoverflow.com/questions/21079941/how-can-i-kill-a-single-shot-qtcore-qtimer- in-pyqt4) –
@ three_pineapples。これは、スタティック関数を使用して開始された単発タイマーの停止に関する疑問に確実には答えません。 – ekhumoro