我 的 个 人 主 页: 失心疯的个人主页
入 门 教 程 推 荐 : Python零基础入门教程合集
虚 拟 环 境 搭 建 : Python项目虚拟环境(超详细讲解)
PyQt5 系 列 教 程: Python GUI(PyQt5)文章合集
Oracle数据库教程: Oracle数据库文章合集
优 质 资 源 下 载 : 资源下载合集
createPopupMenu()
函数QMenuBar(parent) # 创建菜单栏的同时设置父对象
menuBar() # 返回主窗口的QMenuBar对象
setObjectName(str) # 给菜单栏对象设置ObjectName
setGeometry(QRect) # 同时设置菜单栏位置和大小
move() # 设置菜单栏位置
resize() # 设置菜单栏大小
addMenu() # 在菜单栏中添加一个新的QMenu对象
clear() # 清空菜单栏的所有内容
QMenu(parent) # 创建菜单的同时设置父对象
QMenu(title, parent) # 创建菜单的同时设置菜单标题和父对象
setIcon() # 设置主菜单图标
setEnabled() # 将操作按钮设置为启用/禁用
setTitle() # 设置QMenu小控件的标题
clear() # 删除主菜单的所有内容
title() # 返回QMenu小控件的标题
addSeperator() # 在菜单中添加一条分割线
addAction() # 向QMenu小控件中添加一个操作按钮,其中包含文本或图标
QAction(parent) # 创建菜单项的同时设置父对象
QAction(text, parent) # 创建菜单项的同时设置显示文本和父对象
QAction(icon, text, parent) # 创建菜单项的同时设置图标、显示文本和父对象
setIcon() # 设置Action的图标
setText() # 设置Action的显示文字
setObjectName() # 设置该Action的objectName
setToolTi() # 设置当鼠标短暂停留时出现的提示文字
setCheckable() # 设置Action是否可以被复选
setShortcut() # 设置快捷键
setEnabled() # 设置菜单项是否可用
triggered() # 菜单项被点击时触发该信号
triggered(bool) # 菜单项被点击时触发该信号,传递选中状态
# 是带有复选状态参数的信号
hovered() # 当鼠标滑过菜单项时触发该信号
changed() # 当菜单项发射改变时触发该信号
QToolBar(parent) # 创建菜单工具栏的同时设置父对象
QToolBar(title, parent) # 创建菜单工具栏的同时设置标题和父对象
addAction() # 添加一个QAction对象并创建工具栏按钮
addSeparator() # 添加一个分隔条
addWidget() # 添加一个控件到工具栏,如QSpinBox、QLabel等
setMovable() # 设置工具栏是否可以移动
setOrientation() # 设置工具栏方向
# 参数
# Qt.Horizontal # 横向,默认
# Qt.Vertical # 纵向
setToolButtonStyle() # 设置文字、图片显示模式
# 参数 Qt.ToolButtonStyle
# Qt.ToolButtonTextUnderIcon # 文字图片垂直排列
# Qt.ToolButtonTextBesideIcon # 文字图片水平排列
addWidget(widget, stretch) # 将一个控件添加到状态栏,并设置拉伸系数,按添加的顺序从左到右排
列
addPermanentWidget(widget, stretch) # 添加控件位于状态栏的最右边,并设置拉伸系数
insertWidget(index, widget, stretch) # 插入一个控件到指定索引位置,并设置拉伸系数,返回该控件所在的索引号
showMessage() # 在状态栏中显示一条临时信息,指定显示时长
# showMessage子控件是占据整个状态栏,会遮盖掉通过addWidget添加的所有元素
clearMessage() # 删除正在显示的临时信息
removeWidget() # 移除状态栏中指定控件
currentMessage() # 获取状态栏当前显示文本信息
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QMenuBar-功能作用')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
# 创建菜单栏 QMenuBar
menubar = QMenuBar(self) # 创建菜单栏对象,并设置父对象
menubar.setObjectName('menubar') # 给菜单栏对象设置ObjectName
# menubar.move(0, 0) # 设置菜单栏位置
# menubar.resize(500, 30) # 设置菜单栏大小
menubar.setGeometry(QRect(0, 0, 500, 30)) # 同时设置菜单栏位置和大小
# 创建主菜单 QMenu
menu = QMenu(menubar) # 创建主菜单对象,并设置父对象
menu.setObjectName('menu') # 给主菜单设置ObjectName
menu.setTitle('文件') # 给主菜单设置标题
# menu.setIcon(QIcon('../images/bmp/204.bmp')) # 设置主菜单是否可用
# menu.setEnabled(False) # 设置主菜单是否可用
# 创建菜单项 QAction
action = QAction(menu) # 创建菜单项对象,并设置父对象
action.setObjectName('action') # 给菜单项设置ObjectName
action.setText('新建') # 设置菜单项显示文本
action.setIcon(QIcon('../images/bmp/100.bmp')) # 设置菜单项图标
action.setShortcut('Ctrl+N') # 设置菜单项快捷键
actionsave = QAction(menu) # 创建菜单项对象,并设置父对象
actionsave.setObjectName('actionsave') # 给菜单项设置ObjectName
actionsave.setText('保存') # 设置菜单项显示文本
actionsave.setIcon(QIcon('../images/bmp/104.bmp')) # 设置菜单项图标
actionsave.setShortcut('Ctrl+S') # 设置菜单项快捷键
actionsave.setEnabled(False)
# 创建子菜单
menu_sub = QMenu(menu) # 创建主菜单用作子菜单
menu_sub.setObjectName('menu_sub') # 给子菜单设置ObjectName
menu_sub.setTitle('常用') # 给子菜单设置标题
menu_sub.setIcon(QIcon('../images/bmp/218.bmp')) # 给子菜单设置图标
# 菜单项添加到主菜单
menu.addAction(action)
menu.addAction(actionsave)
# 主菜单添加分隔线
menu.addSeparator()
# 子菜单添加到主菜单
menu.addMenu(menu_sub)
# 主菜单添加到菜单栏
menubar.addMenu(menu)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QToolBar-功能作用')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
toolbar = QToolBar(self)
# 创建菜单项 QAction
action = QAction(toolbar) # 创建菜单项对象,并设置父对象
action.setObjectName('action') # 给菜单项设置ObjectName
action.setText('新建') # 设置菜单项显示文本
action.setIcon(QIcon('../images/bmp/100.bmp')) # 设置菜单项图标
action.setShortcut('Ctrl+N') # 设置菜单项快捷键
actionsave = QAction(toolbar) # 创建菜单项对象,并设置父对象
actionsave.setObjectName('actionsave') # 给菜单项设置ObjectName
actionsave.setText('保存') # 设置菜单项显示文本
actionsave.setIcon(QIcon('../images/bmp/104.bmp')) # 设置菜单项图标
actionsave.setShortcut('Ctrl+S') # 设置菜单项快捷键
# actionsave.setEnabled(False)
actionexit = QAction(toolbar)
actionexit.setObjectName('actionexit') # 给菜单项设置ObjectName
actionexit.setText('保存') # 设置菜单项显示文本
actionexit.setIcon(QIcon('../images/bmp/132.bmp')) # 设置菜单项图标
# fontc = QFontComboBox(toolbar)
# 将菜单项添加到工具栏
toolbar.addSeparator()
toolbar.addSeparator()
toolbar.addAction(action)
toolbar.addAction(actionsave)
toolbar.addSeparator()
# toolbar.addWidget(fontc)
# toolbar.addSeparator()
toolbar.addAction(actionexit)
# 设置工具栏是否可以移动(测试无效)
movable = toolbar.setMovable(True)
# 设置工具栏方向
# toolbar.setOrientation(Qt.Vertical)
toolbar.setOrientation(Qt.Horizontal)
# toolbar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) # 文字图片垂直排列
toolbar.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) # 文字图片水平排列
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QStatusBar-功能作用')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
# 创建状态栏对象
status = QStatusBar(self) # 创建状态栏对象的同时设置父对象
status.setObjectName('status') # 给状态栏设置ObjectName
status.setGeometry(QRect(0, 270, 500, 30)) # 设置状态栏位置和大小
# 创建放置在状态栏上的控件
label = QLabel('状态栏显示', status)
label1 = QLabel('状态栏显示1', status)
prob = QProgressBar()
prob.setRange(0, 100)
prob.setValue(50)
# 状态栏添加内容
status.showMessage('准备就绪...', 2000) # 设置显示一条临时信息,并指定显示时长
# status.addWidget(label1)
#
status.addPermanentWidget(label, 0) # 添加控件位于状态栏的最右边
status.addPermanentWidget(prob, 0) # 添加控件到状态栏,并设置拉伸系数,按添加顺序从左到右
status.addPermanentWidget(label1, 0) # 添加控件到状态栏,并设置拉伸系数,按添加顺序从左到右
# status.clearMessage() # 删除正在显示的临时信息
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('')
self.resize(500, 300)
self.createPopupMenu()
QMetaObject.connectSlotsByName(self)
def contextMenuEvent(self, evt) -> None:
# 弹出菜单移动到鼠标点击位置(相对于屏幕位置)
self.menu.move(QPoint(evt.globalPos()))
# 显示菜单
self.menu.show()
def createPopupMenu(self):
self.menu = QMenu(self)
action_new = QAction('新建', self)
action_open = QAction('打开', self)
action_copy = QAction('复制', self)
action_cut = QAction('剪切', self)
action_past = QAction('粘贴', self)
action_new.triggered.connect(lambda: print('用户点击了新建菜单'))
action_ls = [action_new, action_open, action_copy, action_cut, action_past]
self.menu.addActions(action_ls)
return self.menu
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
class MyWindow(QWidget):
def contextMenuEvent(self, evt:QContextMenuEvent) -> None:
print('hello right menu')
menu=QMenu(self)
new_action=QAction('打开',menu)
close_action=QAction('关闭',menu)
menu.addAction(new_action)
menu.addAction(close_action)
#point 调用
menu.exec_(evt.globalPos())
if __name__=='__main__':
import sys
app=QApplication(sys.argv)
win=QWidget()
win.setGeometry(300,300,500,400)
def show_menu(point):
menu=QMenu(win) #将菜单绑定到窗体上
new_action=QAction('打开',menu)
close_action=QAction('关闭',menu)
menu.addAction(new_action)
menu.addAction(close_action)
#point 调用
desk_point=win.mapToGlobal(point) #局部坐标映射到桌面坐标
#print(point)
# print(desk_point)
menu.exec_(desk_point)
win.setContextMenuPolicy(Qt.CustomContextMenu) #定义右键策略
win.customContextMenuRequested.connect(show_menu) #发射信号,会传递point
win.show()
sys.exit(app.exec_())