#!/user/bin/env python
#-*-coding: utf-8-*-
#@Time : 2020/9/15 9:51
#@Author : GodSpeed
#@File : QtPushButton_01.py
#@Software : PyCharm
#0.导入需要的包和模块
from PyQt5.Qt import *
import sys
#1.创建一个应用程序对象
app = QApplication(sys.argv)
#print(app.arguments()) #获取参数
#qApp.arguments() #获取参数
#------------------2.控件操作开始----------------
#2.1 创建窗口对象
window = QWidget()
#2.2 设置控件
#设置窗口标题
window.setWindowTitle('QTpushButton')
#设置窗口大小
window.resize(800,500)
#移动窗口位置
window.move(400,200)
#此处可以创建新的子控件-----------------start---------------
# 文本和图标都显示
# tb = QPushButton(window)
# tb.setText("工具")
# tb.setIcon(QIcon("proxy.png"))
# tb.setIconSize(QSize(80,80))
# #增加提示
# tb.setToolTip("工具按钮")
# 仅显示图标不显示问题,一般用在上方工具栏中
#tb = QToolButton(window)
#tb.setText("工具")
#tb.setIcon(QIcon("proxy.png"))
#tb.setIconSize(QSize(80,80))
#设置风格
#仅显示图标
#tb.setToolButtonStyle(Qt.ToolButtonIconOnly)
#显示在图标旁边
#tb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
#文本显示在图标下方
#tb.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
#后退按钮和前进按钮的工具图标
#箭头按钮
tb1 = QToolButton(window)
#无箭头
tb1.setArrowType(Qt.NoArrow)
#向上的箭头
tb1.setArrowType(Qt.UpArrow)
#向下的箭头
tb1.setArrowType(Qt.DownArrow)
#向左的箭头
tb1.setArrowType(Qt.LeftArrow)
#向右的箭头
tb1.setArrowType(Qt.RightArrow)
tb1.setText("工具")
tb1.setAutoRaise(True) #自动提升
tb1.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
#一般按钮
btn = QPushButton(window)
btn.setText("一般的按钮")
btn.move(100,100)
#btn.setFlat(True) #会取消凸出效果
# 增加菜单
menu = QMenu(btn)
# 增加子菜单
sub_menu = QMenu(menu)
sub_menu.setTitle("子菜单")
sub_menu.setIcon(QIcon("proxy.png"))
action = QAction(QIcon("proxy.png"),"行为",menu)
# 增加响应槽函数
action.triggered.connect(lambda : print("点击了行为菜单"))
menu.addMenu(sub_menu)
#增加分割线
menu.addSeparator()
#增加行为
menu.addAction(action)
btn.setMenu(menu)
# tb1 QToolButton增加子菜单
# 增加菜单
menu = QMenu(tb1)
# 增加子菜单
sub_menu = QMenu(menu)
sub_menu.setTitle("子菜单")
sub_menu.setIcon(QIcon("proxy.png"))
action = QAction(QIcon("proxy.png"),"行为1",menu)
# 为action绑定数据
action.setData([1,2,3,4,5,6])
action2 = QAction("行为2",menu)
action2.setData({
"name2":"GodSpeed"})
# 为action2绑定数据
# 增加响应槽函数
action.triggered.connect(lambda : print("点击了行为1菜单"))
action2.triggered.connect(lambda : print("点击了行为2菜单"))
menu.addMenu(sub_menu)
#增加分割线
menu.addSeparator()
#增加行为
menu.addAction(action)
menu.addAction(action2)
tb1.setMenu(menu)
#增加一个点击事件槽函数
tb1.clicked.connect(lambda :print("工具被点击111111"))
# 注意默认菜单的弹出方式为长按延时才弹出
# 更改弹出方式
#点击按钮侧面的箭头才显示
tb1.setPopupMode(QToolButton.MenuButtonPopup) #不影响信号槽
#点击按钮就显示
#tb1.setPopupMode(QToolButton.InstantPopup) #影响信号槽
# 增加信号,所有的action都会触发
def do_action(action):
print('点击了按钮do_action被触发action',action)
print('do_action: action.data', action.data())
tb1.triggered.connect(do_action)
'''
点击了行为1菜单
点击了按钮do_action被触发action <PyQt5.QtWidgets.QAction object at 0x045CA9B8>
点击了行为2菜单
点击了按钮do_action被触发action <PyQt5.QtWidgets.QAction object at 0x045CA970>
'''
#此处可以创建新的子控件-----------------end---------------
#2.3展示控件
window.show()
# 3.开始执行应用程序并进入消息循环
sys.exit(app.exec_())
Python-GUI编程-PyQt5-QToolButton
猜你喜欢
转载自blog.csdn.net/Narutolxy/article/details/108596387
今日推荐
周排行