2016/11/09(水) [n年前の日記]
#2 [python] PySideのQKeySequenceについてメモ
PySideでメインウインドウにメニューバーをつけた際、各メニューに、setShortcut() を使って、ショートカットキーを割り当てたりすると思うのだけど。
今頃になって、 _QKeySequence なるものがあると知ったのでメモ。
QKeySequence には、あらかじめ決まったショートカットキーが定義されてたりするようで、ソレを使うと分かりやすく…なるのかな? どうかな? どうなんだろう。かえって分かりづらくなったりしないか。どうなんだ。そのへん判断できないけど、とりあえずそういう指定もできるようですね、とメモ。
ただ、一部、シンボルはあるけど中身が定義されてない組み合わせもあるようで。例えば、QKeySequence.SaveAs には何も割り当てられていなかった。
_QKeySequence - PySide v1.0.7 documentation を眺めた感じでは、SaveAs は、Mac OS X と GNOME なら Ctrl+Shift+S が割り当てられてるけど、Windows では何も割り当てられてないっぽい。このキーの組み合わせは、OS側で何かしらに使ってたりするのだろうか? ちょっとよく分からない。
他にも、"Ctrl+S" といった記述の他に、Qt.CTRL + Qt.Key_S、といった記述も可能らしい。
zoomactual_action = view_menu.addAction("Zoom &1:1") zoomactual_action.setShortcut("Ctrl+1") zoomactual_action.triggered.connect(self.zoom_actual_pixels)
今頃になって、 _QKeySequence なるものがあると知ったのでメモ。
QKeySequence には、あらかじめ決まったショートカットキーが定義されてたりするようで、ソレを使うと分かりやすく…なるのかな? どうかな? どうなんだろう。かえって分かりづらくなったりしないか。どうなんだ。そのへん判断できないけど、とりあえずそういう指定もできるようですね、とメモ。
open_action = QAction("&Open", self) open_action.setShortcut(QKeySequence(QKeySequence.Open)) open_action.setStatusTip("Open Image File") open_action.triggered.connect(self.show_open_dialog) file_menu.addAction(open_action) ... zoomin_action = view_menu.addAction("Zoom &In") zoomin_action.setShortcut(QKeySequence(QKeySequence.ZoomIn)) zoomin_action.triggered.connect(self.zoom_in) zoomout_action = view_menu.addAction("Zoom &Out") zoomout_action.setShortcut(QKeySequence(QKeySequence.ZoomOut)) zoomout_action.triggered.connect(self.zoom_out)
ただ、一部、シンボルはあるけど中身が定義されてない組み合わせもあるようで。例えば、QKeySequence.SaveAs には何も割り当てられていなかった。
_QKeySequence - PySide v1.0.7 documentation を眺めた感じでは、SaveAs は、Mac OS X と GNOME なら Ctrl+Shift+S が割り当てられてるけど、Windows では何も割り当てられてないっぽい。このキーの組み合わせは、OS側で何かしらに使ってたりするのだろうか? ちょっとよく分からない。
他にも、"Ctrl+S" といった記述の他に、Qt.CTRL + Qt.Key_S、といった記述も可能らしい。
save_as_action = QAction("Save &As...", self) save_as_action.setShortcut(QKeySequence(Qt.CTRL + Qt.SHIFT + Qt.Key_S)) save_as_action.setStatusTip("Save Canvas Image") save_as_action.triggered.connect(self.show_save_dialog) file_menu.addAction(save_as_action)
[ ツッコむ ]
以上です。