内容
サイドメニューの作り方が気になり調べたところ,QToolBar
を使うと作ることができそうでした。
以下のサイトにサンプルがあったので動かしてみました。
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class tooldemo(QMainWindow):
def __init__(self, parent = None):
super(tooldemo, self).__init__(parent)
layout = QVBoxLayout()
tb = self.addToolBar("File")
new = QAction(QIcon("test.png"),"new",self)
tb.addAction(new)
open = QAction(QIcon("test.png"),"open",self)
tb.addAction(open)
save = QAction(QIcon("test.png"),"save",self)
tb.addAction(save)
tb.actionTriggered[QAction].connect(self.toolbtnpressed)
self.setLayout(layout)
self.setWindowTitle("toolbar demo")
def toolbtnpressed(self,a):
print("pressed tool button is",a.text())
def main():
app = QApplication(sys.argv)
ex = tooldemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
結果
解説
QToolBar
widgetは動かすことが可能で,テキストボタン,アイコンボタン,または他のウィジェットを格納できます。
メソッドの一覧は以下のようになります。
1:addAction()
:テキストorアイコンを持つツールボタンの追加
2:addSeperator()
:グループ内のツールボタンを表示?
3:addWidget()
:ボタン以外のツールバーを加える?
4:addTooBar()
:QMainWindowクラスがもつツールバーを追加するメソッド?
5:setMovable()
:ツールバーが移動可能になる
6:setOrientation()
:ツールバーの方向を設定(Qt.Horizontal または Qt.vertical)
ツールバーのボタンが押されるときにはActionTriggered()
シグナルが発火されます。そしてQActionオブジェクトもなにかするみたい?
addToolBar()
メソッドでファイルツールバーを追加
tb = self.addToolBar("File")
以下でボタンを作成している
new = QAction(QIcon("test.png"),"new",self)
tb.addAction(new)
最後に
QToolBarはQMainWindowクラスが内部で持っていて生成したりするもののようです