質問編集履歴
1
タイトルの変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
KeyPressEventで
|
1
|
+
KeyPressEventでKeyを押している間処理がループしてしまう。
|
body
CHANGED
@@ -1,22 +1,16 @@
|
|
1
1
|
以下のコードを実行するとKeyを離していなくてもKeyReleaseEventが発生し、PressとReleaseを延々とループしてしまいます。
|
2
2
|
これを解決するにはどのような方法が考えられますか?
|
3
3
|
|
4
|
-
|
4
|
+
Zキーを押す→KeyPressEventが一度だけ発生→Zキーを離す→KeyReleaseEventが発生ような仕組みが作りたいです。
|
5
5
|
|
6
|
-
Zキーを押す→KeyPressEventが一度だけ発生→Zキーを離す→KeyReleaseEventが発生
|
7
|
-
|
8
|
-
Zキー押し続けている間にSliderの値を変更すると変更された値を参照してもう一度実行
|
9
|
-
|
10
|
-
このような仕組みが作りたいです。
|
11
6
|
```Python
|
12
|
-
# -*- coding: utf-8 -*-
|
13
7
|
import sys
|
14
8
|
from PySide2.QtWidgets import *
|
15
9
|
from PySide2.QtCore import *
|
16
10
|
|
17
|
-
class
|
11
|
+
class Test(QDialog):
|
18
12
|
def __init__(self, parent=None):
|
19
|
-
super(
|
13
|
+
super(Test, self).__init__(parent)
|
20
14
|
layout = QVBoxLayout(self)
|
21
15
|
self.slider = QSlider(Qt.Horizontal)
|
22
16
|
self.slider.setRange(0, 100)
|
@@ -29,7 +23,7 @@
|
|
29
23
|
def release(self):
|
30
24
|
print('stop')
|
31
25
|
|
32
|
-
def keyPressEvent(self, event):
|
26
|
+
def keyPressEvent(self, event, ):
|
33
27
|
if event.key() == Qt.Key_Z:self.press()
|
34
28
|
|
35
29
|
def keyReleaseEvent(self, event):
|
@@ -37,7 +31,7 @@
|
|
37
31
|
|
38
32
|
if __name__ == '__main__':
|
39
33
|
app = QApplication(sys.argv)
|
40
|
-
|
34
|
+
T = Test()
|
41
|
-
|
35
|
+
T.show()
|
42
36
|
sys.exit(app.exec_())
|
43
37
|
```
|