QDialogウィンドウに続行ボタンがあります。 Enterキーを押すたびに続行ボタンが押されるため、[続行]ボタンはデフォルトのボタンです。私は何か変わったことを発見しました。Enterキーを3回押すと、Continueボタンが3回押されます。しかし、4回目に押すと、ウィンドウ全体が閉じます。ウィンドウを閉じる[続行]ボタンのすぐ下にキャンセルボタンがありますが、キャンセルボタンをデフォルトのボタンなどにしません。QWidgetでkeyPressEventを実装する
keyPressEvent
を無効にして、ウィンドウ内に入るたびに入力ボタンが常に[続行]ボタンに接続されるようにしました。
は、これは私が今持っているものです。
class ManualBalanceUI(QtGui.QWidget):
keyPressed = QtCore.pyqtSignal()
def __init__(self, cls):
super(QtGui.QWidget, self).__init__()
self.window = QtGui.QDialog(None, QtCore.Qt.WindowSystemMenuHint)
self.ui = uic.loadUi('ManualBalanceUI.ui', self.window)
self.keyPressed.connect(self.on_key)
def keyPressEvent(self, event):
super(ManualBalanceUI, self).keyPressEvent(event)
self.keyPressed.emit(event)
def on_key(self, event):
if event.key() == QtCore.Qt.Key_Enter and self.ui.continueButton.isEnabled():
self.proceed() # this is called whenever the continue button is pressed
elif event.key() == QtCore.Qt.Key_Q:
self.window.close() # a test I implemented to see if pressing 'Q' would close the window
def proceed(self):
...
...
しかし、これは今何をやっているようには見えません。 'Q'を押すとウィンドウが閉じず、 '入力'キーが機能しているかどうかはわかりません。私もSourceForgeですべてのドキュメントを見直しPyQt Connect to KeyPressEvent
:
は私が事前にこの質問を見ました。どんな助けでも大歓迎です!
お返事ありがとうございます!私は両方の方法を試してみましたが、残念ながら両者は私のために働いていません。私はそれと一緒に遊んでいくつもりなら何かがあればコメントします –
それはうまくいくはずです、それは私が提供できる最少の例です。幸運:) – Achayan