QToolButton——菜单和弹出模式

1、菜单和弹出模式,同QPushButton,点击有一个快速访问。

QToolButton——菜单和弹出模式_第1张图片QToolButton——菜单和弹出模式_第2张图片

设置过程中,最上级菜单不会弹出里面的标题以及相关图标。

2、给普通按钮设置菜单选项,设置过程中,最上级菜单不会弹出里面的标题以及相关图标

QToolButton——菜单和弹出模式_第3张图片

import sys
from PyQt5.Qt import *

# 做成活动模块,修改方便
# 1、创建应用程序,可以传递参数给app,通过命令行输入参数
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("QToolButton的使用")
window.resize(500, 500)

# 创建一个普通按钮
btn = QPushButton(window)
btn.setText("一般按钮")
btn.move(100, 100)
btn.setFlat(True)

menu = QMenu(btn)
menu.setTitle("菜单")
# 给菜单中放子菜单和行为

sub_menu = QMenu(menu)
sub_menu.setTitle("子菜单")

# 放置在meun父对象中
action = QAction("行为", menu)
# 监听action中的信号
action.triggered.connect(lambda : print("点击了行为"))
menu.addMenu(sub_menu)
menu.addSeparator()
menu.addAction(action)

btn.setMenu(menu)

window.show()
sys.exit(app.exec_())

3、给普通的工具按钮设置:(setMenu()调用QToolButton类中的按钮)

怎样在普通的工具按钮下弹出菜单:(鼠标按住不松,一会才会显示。)

QToolButton——菜单和弹出模式_第4张图片

 使用场景:浏览器的该按钮,按住不松就会显示浏览记录。

QToolButton——菜单和弹出模式_第5张图片

import sys
from PyQt5.Qt import *

# 做成活动模块,修改方便
# 1、创建应用程序,可以传递参数给app,通过命令行输入参数
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("QToolButton的使用")
window.resize(500, 500)

tb = QToolButton(window)
tb.setText("按钮")
tb.setArrowType(Qt.LeftArrow)
tb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
tb.setAutoRaise(True)

menu = QMenu(tb)
menu.setTitle("菜单")
# 给菜单中放子菜单和行为

sub_menu = QMenu(menu)
sub_menu.setTitle("子菜单")

# 放置在meun父对象中
action = QAction("行为", menu)
# 监听action中的信号
action.triggered.connect(lambda : print("点击了行为"))
menu.addMenu(sub_menu)
menu.addSeparator()
menu.addAction(action)
tb.setMenu(menu)

window.show()
sys.exit(app.exec_())

4、修改工具按钮的菜单弹出模式:

菜单模式小细节:有时候会影像信号的发射。(该信号连接的槽并没有被执行)

import sys
from PyQt5.Qt import *

# 做成活动模块,修改方便
# 1、创建应用程序,可以传递参数给app,通过命令行输入参数
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("QToolButton的使用")
window.resize(500, 500)

tb = QToolButton(window)
tb.setText("按钮")
tb.setArrowType(Qt.LeftArrow)
tb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
tb.setAutoRaise(True)

menu = QMenu(tb)
menu.setTitle("菜单")
# 给菜单中放子菜单和行为

sub_menu = QMenu(menu)
sub_menu.setTitle("子菜单")

# 放置在meun父对象中
action = QAction("行为", menu)
# 监听action中的信号
action.triggered.connect(lambda : print("点击了行为"))
menu.addMenu(sub_menu)
menu.addSeparator()
menu.addAction(action)

tb.clicked.connect(lambda: print("工具按钮被点击"))

tb.setMenu(menu)

# 修改菜单的弹出方式
#tb.setPopupMode(QToolButton.InstantPopup)
window.show()
sys.exit(app.exec_())

你可能感兴趣的:(QT学习,qt)