ウィンドウについてPyQt5-02-

ウィンドウのタイプ説明

  • 三つのクラスには、ウィンドウを作成するために使用することができ、直接使用することができ、それはまた、使用後に継承することができます
  • QMainWindow:メインウィンドウのGUIプログラム、メニューバー、ツールバー、ステータスバー、タイトルバーなどは、ウィンドウの最も一般的な形態であり、
  • QWidgetの:すべてのユーザインターフェイスオブジェクトの基本クラスは、すべてのウィンドウまたはコントロールQWidgetのクラスから直接的または間接的に継承は、トップレベルウィンドウとして使用することができる、それはまた、他のウィンドウに埋め込むことができます
  • QDialog:基底クラスのダイアログウィンドウ、短期的に実行するための主なタスク、またはユーザーとの対話、それはモーダルまたは非モーダルすることができ

ステータスウィンドウを表示します

  • .showFullScreen() フルスクリーン表示
  • .showMaximized() ズーム
  • .showMinimized() 最小表示
  • .hide() 隠された窓はまた、ほとんどのコンポーネントでの使用に適しています
  • .show() ほとんどのコンポーネントで使用するためにも、適切な表示ウィンドウ、
  • .windowState() ウィンドウの状態を返します。
  • isMinimized() ウィンドウが最小化されている場合は、戻り値はTrue、それ以外の場合はFALSE。
  • isMaximized() ウィンドウが最大化されている場合、戻り値はTrue、それ以外の場合はFALSE。
  • isFullScreen() ウィンドウ全画面表示した場合、戻り値はTrue、それ以外の場合はFALSE。
  • isActiveWindow() それがアクティブウィンドウである場合、戻り値はTrue、それ以外の場合はFalse ;;

QMainWindow

  • QMainWindowはQWidgetののサブクラスであります
  • これは、含まれ状态栏工具栏かつ菜单栏古典的なアプリケーションフレームワーク
  • ウィンドウには、ルート継承され、このような一般的である場合
  • あなたは絶対的なレイアウトを使用することができます、あなたはボックスのレイアウトを使用することはできません

    ステータスバー

  • 左最下部に表示されるウィンドウの連続体の状態情報を表示します

    メニューバー

  • ドロップダウンメニュー

    ツールバー

  • ツールバーには、最も頻繁に使用されるコマンドを実行する簡単な方法を提供します

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp
from PyQt5.QtGui import QIcon

class FirstWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        self.initUi()

    def initUi(self):
        self.setGeometry(300, 300, 200, 200)
        self.setWindowTitle("第一个窗口")

        #给生成的二级菜单添加一个内容,绑定图标,文本,绑定类(这个按钮属于哪个控件)
        exit_menu = QAction(QIcon(r"1.ico"), "退出", self)
        #绑定一个快捷键
        exit_menu.setShortcut("Ctrl+Q")
        #生成一个菜单按钮链接事件,执行退出命令
        exit_menu.triggered.connect(qApp.quit)

        copy_menu = QAction(QIcon(r"2.ico"), "复制", self)
        copy_menu.setShortcut("Ctrl+C")

        version_menu = QAction(QIcon(r"3.ico"), "版本", self)

        #生成菜单栏
        menubar = self.menuBar()
        #生成一个二级菜单,并命名
        file_bar = menubar.addMenu("文件")
        #给生成的二级菜单添加上面代码生成的二级内容
        file_bar.addAction(exit_menu)
        edit_bar = menubar.addMenu("编辑")
        edit_bar.addAction(copy_menu)
        help_bar = menubar.addMenu("帮助")
        help_bar.addAction(version_menu)

        #生成一个工具
        exit_tool = QAction(QIcon(r"4.ico"), "退出", self)
        exit_tool.triggered.connect(qApp.quit)
        #生成一个工具栏,并给整个工具栏命名
        toolbar = self.addToolBar("工具栏")
        #添加工具
        toolbar.addAction(exit_tool)
       
        #生成每个按钮的状态栏信息
        exit_menu.setStatusTip("退出程序")
        copy_menu.setStatusTip("复制")
        version_menu.setStatusTip("版本")
        exit_tool.setStatusTip("退出程序")
        #生成状态栏
        self.statusBar()

def mainGui():
    app = QApplication(sys.argv)
    #设置显示风格Fusion及windows
    app.setStyle('Fusion')
    firstwindow = FirstWindow()
    firstwindow.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    mainGui()

QWidgetの

  • すべてPyQt5 QWidgetのサブクラスで表示することができるすべての

1.コントロール.setToolTip(「バブルコンテンツ表示」)

  • 制御は、気泡含有率の表示を提供することができます
  • されてfrom PyQt5.QtWidgets import QToolTipインポート
  • することでQToolTip.setFont(QFont('SansSerif', 30))、テキストの泡のフォントとサイズを設定します

画面サイズを取得します。2.

from PyQt5.QtWidgets import QDesktopWidget
#获得屏幕尺寸
screen = QDesktopWidget().screenGeometry()
#获得屏幕的宽度
width = screen.width()
#获得屏幕的高度
height = screen.height()

[プロパティ]ウィンドウ3.アクセス

from PyQt5.QtWidgets import QWidget
app = QApplication(sys.argv)
firstwindow = QWidget()
print(firstwindow.width()) #获取窗口宽度
print(firstwindow.height()) #获取窗口高度
print(firstwindow.x()) #获取窗口左上角的X坐标
print(firstwindow.y()) #获取窗口左上角的Y坐标

アイコンに小さなウィンドウを追加します。4.

from PyQt5.QtGui import QIcon
firstwindow = QWidget()
firstwindow.setWindowIcon(QIcon(r"图标路径"))

メッセージウィンドウ

#关闭窗口时弹出确认窗口
from PyQt5.QtWidgets import QMessageBox
def closeEvent(self, event):
    reply = QMessageBox.question(self,"确认退出","你确定要退出么?",QMessageBoxYes,
    QMessageBoxNo)
    if reply == QMessageBox.Yes:
        event.accept()
    else:
        event.ignore()

ターゲット

  • 絶対レイアウトにターゲットに、ボックスのレイアウト、レイアウトグリッド

1.絶対位置決めモード

  • QMainWindow()とQWidgetの()ウィンドウクラスは、絶対測位モードを使用することができ
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel

class FirstWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUi()
    def initUi(self):
        self.setWindowTitle("第一窗口")
        self.setGeometry(300, 300, 400, 400)
        QLabel('Couldn\'t', self).move(15, 10)
        QLabel('care', self).move(35, 40)
        QLabel('less', self).move(55, 65)
        QLabel('and', self).move(115, 65)
        QLabel('then', self).move(135, 45)
        QLabel('you', self).move(115, 25)
        QLabel('kiss', self).move(145, 10)
        QLabel('me', self).move(215, 10)       
def guiMainLoop():
    app = QApplication(sys.argv)
    firstwindow = FirstWindow()
    firstwindow.show()
    sys.exit(app.exec_())
if __name__ == "__main__":
    guiMainLoop()

2.ボックスレイアウト

  • QMainWindow()はクラスウィンドウボックスレイアウトを使用することができない、QWidgetの()クラスレイアウトウィンドウボックスを使用することができます
  • CAN()メンバクラスセンターウィンドウザQMainWindow、ボックスレイアウトをQWidgetの()ウィンドウクラスを追加することによってsetCentralWidget法後
  • QHBoxLayout()水平レイアウト
  • QVBoxLayout、()垂直レイアウト
  • .addWidget()メンバーの追加
  • スペーシング要素を追加する.addStretch()
  • .setLayout()全体的なレイアウトを生成します
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout, QVBoxLayout

class FirstWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initUi()
    def initUi(self):
        self.setWindowTitle("第一窗口")
        self.setGeometry(300, 300, 400, 400)

        self.b1 = QPushButton("按钮1")
        self.b2 = QPushButton("按钮2")
        
        #建立一个水平布局
        self.h_box = QHBoxLayout()
        #从左往右添加一个间隔,两个按钮
        self.h_box.addStretch(1)
        self.h_box.addWidget(self.b1)
        self.h_box.addWidget(self.b2)
        
        #建立一个垂直布局
        self.v_box = QVBoxLayout()
        #从上往下添加一个间隔,上面的水平布局
        self.v_box.addStretch(1)
        self.v_box.addLayout(self.h_box)
        
        #生成总体布局
        self.setLayout(self.v_box)

def guiMainLoop():
    app = QApplication(sys.argv)
    firstwindow = FirstWindow()
    firstwindow.show()
    sys.exit(app.exec_())
if __name__ == "__main__":
    guiMainLoop()

3.グリッドレイアウト

  • QMainWindow()はクラスウィンドウボックスレイアウトを使用することができない、QWidgetの()クラスレイアウトウィンドウボックスを使用することができます
  • CAN()メンバクラスセンターウィンドウザQMainWindow、グリッドレイアウトを使用して、QWidgetの()ウィンドウクラスを追加することによりsetCentralWidget方法後
  • レイアウトウィンドウのスペースは、行と列に分割されます
  • QGridLayoutは()グリッドレイアウトを作成します
  • グリッド内.addWidget()メンバーを加えました
  • .setLayout()全体的なレイアウトを生成します
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout, QMainWindow

class FirstWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initUi()
    def initUi(self):
        self.setWindowTitle("第一窗口")
        self.setGeometry(300, 300, 400, 400)

        self.b1 = QPushButton("按钮1")
        self.b2 = QPushButton("按钮2")
        self.b3 = QPushButton("按钮3")
        self.b4 = QPushButton("按钮4")
        self.b5 = QPushButton("按钮5")
        self.b6 = QPushButton("按钮6")
        self.b7 = QPushButton("按钮7")
        self.b8 = QPushButton("按钮8")
        self.b9 = QPushButton("按钮9")

        #实例化一个网格布局
        self.grid = QGridLayout()
        #给网格布局添加部件
        self.grid.addWidget(self.b1, 0, 0)
        self.grid.addWidget(self.b2, 0, 1)
        self.grid.addWidget(self.b3, 0, 2)
        self.grid.addWidget(self.b4, 0, 3)
        self.grid.addWidget(self.b5, 1, 0)
        self.grid.addWidget(self.b6, 1, 1)
        self.grid.addWidget(self.b7, 1, 2)
        self.grid.addWidget(self.b8, 2, 0)
        #参数为 行,列,行跨度,列跨度
        self.grid.addWidget(self.b9, 2, 1, 5, 2)
        #生成总体布局
        self.setLayout(self.grid)

def guiMainLoop():
    app = QApplication(sys.argv)
    firstwindow = FirstWindow()
    firstwindow.show()
    sys.exit(app.exec_())
if __name__ == "__main__":
    guiMainLoop()

おすすめ

転載: www.cnblogs.com/TK-tank/p/12452175.html