質問するログイン新規登録

質問編集履歴

1

タイトルの変更

2020/07/28 01:44

投稿

OKA-G
OKA-G

スコア16

title CHANGED
@@ -1,1 +1,1 @@
1
- KeyPressEventでAutorepeat無効にい。
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 Gui(QDialog):
11
+ class Test(QDialog):
18
12
  def __init__(self, parent=None):
19
- super(Gui, self).__init__(parent)
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
- g = Gui()
34
+ T = Test()
41
- g.show()
35
+ T.show()
42
36
  sys.exit(app.exec_())
43
37
  ```