1. 程式人生 > >【PyQt5 學習記錄】005:QMainWindow 及狀態欄、菜單欄和工具欄

【PyQt5 學習記錄】005:QMainWindow 及狀態欄、菜單欄和工具欄

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 及狀態欄、菜單欄和工具欄