2017-05-16 3 views
0

以下のコードは、5つのボタンで1つのダイアログウィンドウを作成します。各ボタンはonClick機能に接続されています。 「Enter」キーを押すと、キーボードのいずれかのボタンがトリガーされ、onClick機能が実行されます。キーボードキーを入力してQPushButtonをトリガーしないようにする方法

onClickがボタンをクリックしてEnterのキーボードキーに応答しないときにのみ、ボタンが機能するようにボタンのプロパティを変更する方法はありますか?

enter image description here

from PyQt4 import QtGui 

def onClick(): 
    print 'button clicked' 

dialog = QtGui.QDialog() 
dialog.setLayout(QtGui.QVBoxLayout()) 
for i in range(5): 
    btn = QtGui.QPushButton('Button %03d'%i) 
    btn.clicked.connect(onClick) 
    dialog.layout().addWidget(btn) 
dialog.show() 

答えて

1

FalseにQPushButtonsdefaultautoDefaultプロパティを設定します。例えば。あなたが観察している何

btn = QtGui.QPushButton('Button %03d'%i, default=False, autoDefault=False) 

は(QDialogを使用している場合、それは一般的な落とし穴です)デフォルト'dialog action'をトリガするキー入力のQDialogの特別な処理です。

+0

QPushButtonに関連付けられたアクションをトリガーするのが「Enter」キーをもたらすのがQdialogとQPushButtonの間のやりとりであることを指摘してくれてありがとう。 –

関連する問題