【PyQt5 学习记录】005:QMainWindow 及状态栏、菜单栏和工具栏
- #!/usr/bin/env python
- import sys
- from PyQt5.QtWidgets import (QApplication,
- QMainWindow,
- QWidget,
- QAction,
- QLabel,
- QTextEdit,
- QLineEdit,
- QPushButton,
- QGridLayout)
- from PyQt5.QtCore import Qt
- from PyQt5.QtGui import QIcon
- class MainWindow(QMainWindow):
- def __init__(self, parent=None):
- super(MainWindow, self).__init__(parent, Qt.Window)
- # 创建一个菜单栏:
- bar_menu = self.menuBar()
- # 为菜单栏添加文件菜单
- menu_file = bar_menu.addMenu('文件(&F)')
- # 为菜单栏添加编辑菜单
- menu_edit = bar_menu.addMenu('编辑(&E)')
- # 添加一个动作:
- action_file = QAction('打开', self)
- # 为动作添加快捷建:
- # 值得注意的是在 MAC os 中 Ctrl 指的是 command 。
- action_file.setShortcut('Ctrl+O')
- # 为动作添加图标:
- action_file.setIcon(QIcon('open.png'))
- # 将点击动作的信号连接到 action_open 方法:
- action_file.triggered.connect(self.action_open)
- # 将打开动作添加到文件菜单中:
- menu_file.addAction(action_file)
- action_copy = QAction('复制', self)
- action_copy.setIcon(QIcon('copy.png'))
- # 在 MAC os 中 Meta 才是 Ctrl 按钮:
- action_copy.setShortcut('Meta+C')
- action_copy.triggered.connect(self.action_copy)
- menu_edit.addAction(action_copy)
- # 创建一个工具栏:
- bar_tool = self.addToolBar('工具栏')
- # 为工具栏添加按钮:
- bar_tool.addAction(action_file)
- # 为添加分割线:
- bar_tool.addSeparator()
- bar_tool.addAction(action_copy)
- label_1 = QLabel('居右')
- # 设置Label的文字为居右并垂直居中:
- label_1.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
- label_2 = QLabel('宽度因子为 1')
- label_3 = QLabel('居中')
- # 设置Label的文字为居中并垂直居中:
- label_3.setAlignment(Qt.AlignCenter | Qt.AlignVCenter)
- self.label_4 = QLabel('Label_4')
- # 创建一个状态栏:
- status = self.statusBar()
- # 在状态栏显示信息:
- # 注意:显示信息时,组件不会显示
- # status.showMessage("Ready!")
- # 为状态栏添加一个stretch(拉伸因子)为1的Label
- status.addWidget(label_1, 1)
- status.addWidget(label_2, 1)
- status.addWidget(label_3, 3)
- status.addWidget(self.label_4, 1)
- """
- 为 QMainWindow 添加其他组件的方法:
- 1. 将组件添加到一个布局中;
- 2. 创建一个 QWidget 设置为 1 中的布局;
- 3. 将 2 中的 QWidget 设为central widget 。
- """
- line_edit = QLineEdit()
- # 为 line_edit 设置灰色提示文字:
- line_edit.setPlaceholderText('请输入...')
- push_button = QPushButton()
- push_button.setText('确认')
- text_edit = QTextEdit()
- text_edit.setPlaceholderText("编辑结果...")
- # 创建一个网格布局:
- layout_grid = QGridLayout()
- layout_grid.addWidget(line_edit, 0, 0)
- layout_grid.addWidget(push_button, 0, 1)
- layout_grid.addWidget(text_edit, 1, 0, 2, 2)
- # 创建一个 QWidget ,并将其布局设置为 layout_grid :
- widget = QWidget()
- widget.setLayout(layout_grid)
- # 将 widget 设为主窗口的 central widget :
- self.setCentralWidget(widget)
- # 设置窗口大小:
- self.resize(500, 500)
- # 设置窗口标题:
- self.setWindowTitle(u"QMainWindow")
- # 显示窗口:
- self.show()
- def action_open(self):
- self.label_4.setText("按下了打开按钮!")
- def action_copy(self):
- self.label_4.setText("按下了复制按钮!")
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- window = MainWindow()
- sys.exit(app.exec_())
效果如下图:
【PyQt5 学习记录】005:QMainWindow 及状态栏、菜单栏和工具栏的更多相关文章
- 【PyQt5 学习记录】006:重写窗口事件及QMessageBox
#!/usr/bin/env python import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QMessageBox ...
- 【PyQt5 学习记录】011:使用 QListWidet 创建列表
使用 QListWidet 创建列表 作者: 八月未见 博客: https://www.cnblogs.com/jmtm/ 创建列表: list_widget = QListWidget() 插入项目 ...
- 【PyQt5 学习记录】010:QSplitter
import sys from PyQt5.QtWidgets import (QApplication, QWidget, QSplitter, QTextEdit, QPushButton, QL ...
- 【PyQt5 学习记录】008:改变窗口样式之二
super(MainWindow, self).__init__(parent, flags=Qt.Widget) 首先需要关闭窗口的默认样式,以方便定时想要的样式: self.setWindowFl ...
- 【PyQt5 学习记录】007:改变窗口样式之一
class MainWindow(QMainWindow): 2 def __init__(self, parent=None): 3 super(MainWindow, self).__init__ ...
- 【PyQt5 学习记录】004:简单QThread笔记
在文本编辑框中每隔几秒添加一行文本,代码如下: #!/usr/bin/python3 # -*- coding:utf-8 -*- import sys from PyQt5.QtWidgets im ...
- 【PyQt5 学习记录】001:第一个界面
PyQt5 的安装很简单: pip3 install PyQt5 然后就是写一个最简单的界面试试手: import sys from PyQt5.QtWidgets import QApplicati ...
- 【PyQt5 学习记录】009:批量创建组件并查找
这里需要在创建组件时使用 setObjectName() 为其添加 objectName 属性,再通过 findChild() 或者 findChildren() 函数来查找. 举个栗子,批量创建10 ...
- 【PyQt5 学习记录】003:水平布局和获取屏幕尺寸
#!/usr/bin/python3 # -*- coding:utf-8 -*- import sys from PySide2.QtWidgets import (QApplication, QW ...
随机推荐
- java的几种定时任务
本篇博文主要是讲述2.x 版本的quartz下的实现方案,1.x 版本的实现方式大致原理一致,但是具体的实现方式有些不一致,具体体现在获取 scheduler 这个类的方式上有些不同,这里不作过多的 ...
- vue 学前班001(基础概念)
1 学习目标 通过这一节,你会学会: 1.目前前端技术使用的趋势 2.什么是MVVM 3.Vue.js的两大核心 4.Vue.js的适用场景 诞生背景 近几年来,得益于手机设备的普及和性能的提升, ...
- PHP之旅8 URL与表单
表单 表单的出现让用户和后台主机有了直接的交互,网站开始变的‘动态起来’,在HTML的各个标记符中,与PHP关系最为紧密的要属表单标记符了,常见的表单标记符有<form>.<inpu ...
- php内核为变量的值分配内存的几个宏
在php5.3之前,为某变量分配内存是用宏 MAKE_STD_ZVAL; 737 #define MAKE_STD_ZVAL(zv) \ # /Zend/zend.h738 ALLOC_ZVAL(zv ...
- 使用图片预加载,解决断网后无法从后台获取提示网络异常的logo图片的问题
项目中有需求,断网后,显示小提示窗,里面包含网络异常提示语和异常小logo图片. 在实际操作时,遇到,断网后,无法从后台获取异常小logo图片. 我是才用图片预加载的方法解决这个问题的,解决方法如下: ...
- 从Windows下引导安装ubuntu
Ubuntu引导安装 首先是安装前的准备工作 1.需要安装的 ubuntu系统的ISO镜像. 2.easyBCD引导软件 3.所在的Windows系统(本人win7下安装) 4.DiskGenius( ...
- Neko and Aki's Prank CodeForces - 1152D (括号序列,dp)
大意: 将所有长度为2*n的合法括号序列建成一颗trie树, 求trie树上选出一个最大不相交的边集, 输出边集大小. 最大边集数一定不超过奇数层结点数. 这个上界可以通过从底层贪心达到, 所以就转化 ...
- (转)Python数据分析之numpy学习
原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...
- python实现二叉树的建立以及遍历(递归前序、中序、后序遍历,队栈前序、中序、后序、层次遍历)
#-*- coding:utf-8 -*- class Node: def __init__(self,data): self.data=data self.lchild=None self.rchi ...
- [转] 使用 MVC 5 的 EF6 Code First 入门 系列
译文:http://www.cnblogs.com/Bce-/category/573301.html 原文:http://www.asp.net/mvc/overview/getting-start ...