ラズパイデスクトップでPyQt5入門(3)
こんばんは。國松です。
今回はデスクトップウィンドウの真ん中に画面を表示する所から始めたいと思います。
参考サイト
ZetCode PyQt5 tutorial
【PythonでGUI】PyQt5 -始めの一歩-
6.Centering window on the screen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #!/usr/bin/python3 #coding:utf-8 """ This program center window on the screen """ import sys from PyQt5.QtWidgets import QWidget, QDesktopWidget,QApplication class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.resize(250,150) self.center() self.setWindowTitle('Center') self.show() def center(self): #ウィンドウ全体の情報を取得した長方形qrを作成 qr = self.frameGeometry() #ウィンドウの中心を取得 cp = QDesktopWidget().availableGeometry().center() #長方形qrをウィンドウの中心に移動 qr.moveCenter(cp) #アプリケーションウィンドウの左上と長方形qrの左上を合わせる self.move(qr.topLeft()) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) |
QDesktopWidgetクラスは画面サイズなどユーザーのデスクトップに関する情報を提供します。
真ん中に表示されているような気もしますし少しずれているような気もしますがまぁOKとして次に進みたいと思います。
Menus and toolbars PyQt5
ここからはステータスバー、メニューバー、ツールバーを作成していきたいと思います。
1.Statusbar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #!/usr/bin/python3 #coding: utf-8 """ This program creates a statusbar """ import sys from PyQt5.QtWidgets import QMainWindow, QApplication class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.statusBar().showMessage('Ready') self.setGeometry(300,300,250,150) self.setWindowTitle('Statusbar') self.show() if __name__ =='__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec()) |
QMainWindowクラス
QMainWindowクラスはメインアプリケーションウィンドを提供します。これによりステータスバー,ツールバー,及びメニューバーを持つ従来のアプリケーションスケルトンを作成できます。
self.statusBar().showMessage(‘Ready’)
ステーバスバーはQMainWindowウィジェットの助けを借りて作成されます。
ステータスバーを取得するにはQtGui.QMainWindowクラスのstatusBar()メソッドを呼び出します。
2.Simple menu(Menubarの作成)
1つのメニューを持つメニューバーを作成していきます。このメニューを選択するとアプリケーションを終了させるものを作成していきます。ステータスバーも作成していきます。
アプリケーションの終了はCtrl+Qでも行えるようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #!/isr/bin/python3 #coding:utf-8 """ This progra, creates a menubara. The munebar has pne menu with an exit action. """ import sys from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): #アイコンを付加、ラベルはExitのアクションオブジェクトを作成 exitAct = QAction(QIcon('exit.png'),'&Exit',self) #ショートカットを作成 exitAct.setShortcut('Ctrl+Q') #カーソルをのせるとステータスバーへ表示 exitAct.setStatusTip('Exit application') exitAct.triggered.connect(qApp.quit) self.statusBar() #メニューバー作成 menubar = self.menuBar() #ファイルメニューを作成 fileMenu = menubar.addMenu('&File') #exitActionを紐付ける fileMenu.addAction(exitAct) self.setGeometry(300,300,300,200) self.setWindowTitle('Simple menu') self.show() if __name__ =='__main__': app =QApplication(sys.argv) ex = Example() sys.exit(app.exec()) |
少し動画がぼやけてしまっていてすみません。ここでも残念ながらメニューセットしたはずのIconが表示されていません。
コードでいうと21行目です。原因と対策がお分かりの方は教えて頂けますと幸いです。それでは今回はここまでにしたいと思います。