大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ラズパイデスクトップでPyQt5入門(3) 

著者:國松亜紗子
公開日:2019/08/27
最終更新日:2019/08/27
カテゴリー:技術情報

こんばんは。國松です。
今回はデスクトップウィンドウの真ん中に画面を表示する所から始めたいと思います。

参考サイト
ZetCode PyQt5 tutorial
【PythonでGUI】PyQt5 -始めの一歩-

6.Centering window on the screen

#!/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

#!/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でも行えるようにします。

#!/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行目です。原因と対策がお分かりの方は教えて頂けますと幸いです。それでは今回はここまでにしたいと思います。

 

    上に戻る