【PyQt5 學習記錄】005:QMainWindow 及狀態欄、菜單欄和工具欄
阿新 • • 發佈:2018-10-22
qt5 open file statusbar ati etc con bubuko import
1 #!/usr/bin/env python 2 3 import sys 4 from PyQt5.QtWidgets import (QApplication, 5 QMainWindow, 6 QWidget, 7 QAction, 8 QLabel, 9 QTextEdit,10 QLineEdit, 11 QPushButton, 12 QGridLayout) 13 from PyQt5.QtCore import Qt 14 from PyQt5.QtGui import QIcon 15 16 17 class MainWindow(QMainWindow): 18 def __init__(self, parent=None): 19 super(MainWindow, self).__init__(parent, Qt.Window) 20 21 # 創建一個菜單欄: 22 bar_menu = self.menuBar() 23 # 為菜單欄添加文件菜單 24 menu_file = bar_menu.addMenu(‘文件(&F)‘) 25 # 為菜單欄添加編輯菜單 26 menu_edit = bar_menu.addMenu(‘編輯(&E)‘) 27 28 # 添加一個動作: 29 action_file = QAction(‘打開‘, self) 30 # 為動作添加快捷建: 31 # 值得註意的是在 MAC os 中 Ctrl 指的是 command 。 32 action_file.setShortcut(‘Ctrl+O‘) 33 # 為動作添加圖標: 34 action_file.setIcon(QIcon(‘open.png‘)) 35 # 將點擊動作的信號連接到 action_open 方法: 36 action_file.triggered.connect(self.action_open) 37 # 將打開動作添加到文件菜單中: 38 menu_file.addAction(action_file) 39 40 action_copy = QAction(‘復制‘, self) 41 action_copy.setIcon(QIcon(‘copy.png‘)) 42 # 在 MAC os 中 Meta 才是 Ctrl 按鈕: 43 action_copy.setShortcut(‘Meta+C‘) 44 action_copy.triggered.connect(self.action_copy) 45 menu_edit.addAction(action_copy) 46 47 # 創建一個工具欄: 48 bar_tool = self.addToolBar(‘工具欄‘) 49 # 為工具欄添加按鈕: 50 bar_tool.addAction(action_file) 51 # 為添加分割線: 52 bar_tool.addSeparator() 53 bar_tool.addAction(action_copy) 54 55 label_1 = QLabel(‘居右‘) 56 # 設置Label的文字為居右並垂直居中: 57 label_1.setAlignment(Qt.AlignRight | Qt.AlignVCenter) 58 label_2 = QLabel(‘寬度因子為 1‘) 59 label_3 = QLabel(‘居中‘) 60 # 設置Label的文字為居中並垂直居中: 61 label_3.setAlignment(Qt.AlignCenter | Qt.AlignVCenter) 62 self.label_4 = QLabel(‘Label_4‘) 63 64 # 創建一個狀態欄: 65 status = self.statusBar() 66 # 在狀態欄顯示信息: 67 # 註意:顯示信息時,組件不會顯示 68 # status.showMessage("Ready!") 69 # 為狀態欄添加一個stretch(拉伸因子)為1的Label 70 status.addWidget(label_1, 1) 71 status.addWidget(label_2, 1) 72 status.addWidget(label_3, 3) 73 status.addWidget(self.label_4, 1) 74 75 """ 76 為 QMainWindow 添加其他組件的方法: 77 1. 將組件添加到一個布局中; 78 2. 創建一個 QWidget 設置為 1 中的布局; 79 3. 將 2 中的 QWidget 設為central widget 。 80 """ 81 82 line_edit = QLineEdit() 83 # 為 line_edit 設置灰色提示文字: 84 line_edit.setPlaceholderText(‘請輸入...‘) 85 86 push_button = QPushButton() 87 push_button.setText(‘確認‘) 88 89 text_edit = QTextEdit() 90 text_edit.setPlaceholderText("編輯結果...") 91 92 # 創建一個網格布局: 93 layout_grid = QGridLayout() 94 layout_grid.addWidget(line_edit, 0, 0) 95 layout_grid.addWidget(push_button, 0, 1) 96 layout_grid.addWidget(text_edit, 1, 0, 2, 2) 97 98 # 創建一個 QWidget ,並將其布局設置為 layout_grid : 99 widget = QWidget() 100 widget.setLayout(layout_grid) 101 # 將 widget 設為主窗口的 central widget : 102 self.setCentralWidget(widget) 103 104 # 設置窗口大小: 105 self.resize(500, 500) 106 # 設置窗口標題: 107 self.setWindowTitle(u"QMainWindow") 108 # 顯示窗口: 109 self.show() 110 111 def action_open(self): 112 self.label_4.setText("按下了打開按鈕!") 113 114 def action_copy(self): 115 self.label_4.setText("按下了復制按鈕!") 116 117 118 if __name__ == "__main__": 119 app = QApplication(sys.argv) 120 window = MainWindow() 121 sys.exit(app.exec_())
效果如下圖:
【PyQt5 學習記錄】005:QMainWindow 及狀態欄、菜單欄和工具欄