PyQt5Day09--按钮QPushButton+子类QCommandLinkButton

1、QPushButton简介

  用来给用户点击,来完成某种动作的控件——一般是矩形

  比如:登录按钮,注册按钮,关闭按钮......等等

  继承QAbstractButton

2、QPushButton——构造函数

(1)框架

(2)操作

1 btn = QPushButton(QIcon('xxx.png'),'xxx',window) # 实现以下功能
2 # btn.setParent(window)
3 # btn.setText("xxx")
4 # btn.setIcon(QIcon('xxx.png'))

3、QPushButton——菜单设置

(1)框架

  QMenu()继承QWidget

(2)操作:菜单添加行为动作,菜单添加子菜单,子菜单添加行为动作,构造函数

 1 # *******************菜单设置**********************开始
 2 import sys
 3 from PyQt5.Qt import *
 4 
 5 app=QApplication(sys.argv)
 6 
 7 window=QWidget()
 8 window.setWindowTitle("菜单设置")
 9 window.resize(500,500)
10 
11 btn = QPushButton(QIcon('xxx.png'),'xxx',window)
12 # *********菜单设置***********begin
13 menu = QMenu()
14 
15 # 子菜单
16 open_recent_menu = QMenu(menu)
17 open_recent_menu.setTitle("最近打开")
18 # open_recent_menu.setIcon() # 也可以设置图标
19 
20 # 创建相应的行为动作
21 # new_action = QAction()
22 # new_action.setText("新建")
23 # new_action.setIcon(QIcon('xxx.png'))
24 new_action = QAction(QIcon('xxx.png'),'新建',menu) # 构造函数,实现以上功能
25 new_action.triggered.connect(lambda :print("新建文件"))
26 
27 open_action = QAction(QIcon('xxx.png'),'打开',menu) # 构造函数,实现以上功能
28 open_action.triggered.connect(lambda :print("打开文件"))
29 
30 exit_action = QAction('退出',menu) # 构造函数,实现以上功能
31 exit_action.triggered.connect(lambda :print("退出程序"))
32 
33 file_action = QAction("Python-GUI-PyQt",open_recent_menu)
34 open_recent_menu.addAction(file_action) # 添加到子菜单
35 # 将行为动作添加到菜单
36 menu.addAction(new_action)
37 menu.addAction(open_action)
38 menu.addMenu(open_recent_menu) # 添加子菜单
39 menu.addSeparator()  # 添加分割线
40 menu.addAction(exit_action)
41 # *********菜单设置***********end
42 
43 btn.setMenu(menu) # 控件里加入菜单
44 
45 # btn.showMenu() # 展示菜单
46 print(btn.menu()) # 获取菜单
47 
48 window.show()
49 sys.exit(app.exec_())
50 # *******************菜单设置**********************结束
菜单设置

4、QPushButton——扁平化

(1)框架

(2)操作:btn.isFlat(True)

 1 # *******************扁平化**********************开始
 2 import sys
 3 from PyQt5.Qt import *
 4 
 5 app=QApplication(sys.argv)
 6 
 7 window=QWidget()
 8 window.setWindowTitle("扁平化")
 9 window.resize(500,500)
10 
11 btn = QPushButton(QIcon('xxx.png'),'哈哈',window)
12 btn.setStyleSheet('background-color:red')
13 # 扁平化  设置了扁平化不显示背景色
14 btn.setFlat(True)
15 print(btn.isFlat())
16 
17 window.show()
18 sys.exit(app.exec_())
19 # *******************扁平化**********************结束
扁平化

5、QPushButton——默认处理

(1)框架

(2)操作:

 1 # *******************默认处理**********************开始
 2 import sys
 3 from PyQt5.Qt import *
 4 
 5 app=QApplication(sys.argv)
 6 
 7 window=QWidget()
 8 window.setWindowTitle("默认处理")
 9 window.resize(500,500)
10 
11 btn1 = QPushButton(QIcon('xxx.png'),"btn",window)
12 btn2 = QPushButton("btn",window)
13 btn2.move(200,200)
14 
15 btn1.setAutoDefault(True) # 用户点击后才会默认
16 
17 print(btn1.autoDefault()) # True
18 print(btn2.autoDefault()) # False
19 
20 btn2.setDefault(True)  # 一开始就是默认处理
21 
22 window.show()
23 sys.exit(app.exec_())
24 # *******************默认处理**********************结束
默认处理

6、QpushButton——右键菜单

(1)框架

(2)操作

方法一:通过对象方法调用contextMenuEvent( )

 1 # *******************右键菜单**********************开始
 2 import sys
 3 from PyQt5.Qt import *
 4 
 5 class Window(QWidget):
 6     def contextMenuEvent(self, evt):
 7         print("展示菜单")
 8         menu = QMenu(self)
 9 
10         open_action = QAction(QIcon('xxx.png'), "打开文件")
11         open_action.triggered.connect(lambda: print("打开文件"))
12         new_action = QAction(QIcon('xxx.png'), "新建文件")
13         new_action.triggered.connect(lambda: print("新建文件"))
14         save_action = QAction(QIcon('xxx.png'), "保存")
15         save_action.triggered.connect(lambda: print("保存"))
16         exit_action = QAction(QIcon('xxx.png'), "退出")
17         exit_action.triggered.connect(lambda: print("退出"))
18 
19         menu.addAction(open_action)
20         menu.addAction(new_action)
21         menu.addAction(save_action)
22         menu.addAction(exit_action)
23         menu.exec_(QPoint(evt.globalPos()))
24 
25 app=QApplication(sys.argv)
26 
27 window=Window()
28 window.setWindowTitle("右键菜单")
29 window.resize(500,500)
30 
31 btn = QPushButton(QIcon('xxx.png'),'菜单',window)
32 menu = QMenu()
33 
34 open_action = QAction(QIcon('xxx.png'),"打开文件")
35 open_action.triggered.connect(lambda :print("打开文件"))
36 menu.addAction(open_action)
37 btn.setMenu(menu)
38 
39 window.show()
40 sys.exit(app.exec_())
41 # *******************右键菜单**********************结束
右键菜单--法一
 1 # *******************右键菜单--2**********************开始
 2 import sys
 3 from PyQt5.Qt import *
 4 
 5 def show_menu(point):
 6     print("展示菜单",point)
 7     menu = QMenu(window)
 8 
 9     open_action = QAction(QIcon('xxx.png'), "打开文件")
10     open_action.triggered.connect(lambda: print("打开文件"))
11     new_action = QAction(QIcon('xxx.png'), "新建文件")
12     new_action.triggered.connect(lambda: print("新建文件"))
13     save_action = QAction(QIcon('xxx.png'), "保存")
14     save_action.triggered.connect(lambda: print("保存"))
15     exit_action = QAction(QIcon('xxx.png'), "退出")
16     exit_action.triggered.connect(lambda: print("退出"))
17 
18     menu.addAction(open_action)
19     menu.addAction(new_action)
20     menu.addAction(save_action)
21     menu.addAction(exit_action)
22 
23     dest_point = window.mapToGlobal(point)
24     menu.exec_(QPoint(dest_point))
25 
26 app=QApplication(sys.argv)
27 
28 window=QWidget()
29 window.setWindowTitle("右键菜单")
30 window.resize(500,500)
31  
32 btn = QPushButton(QIcon('xxx.png'),'菜单',window)
33 menu = QMenu()
34 
35 open_action = QAction(QIcon('xxx.png'),"打开文件")
36 open_action.triggered.connect(lambda :print("打开文件"))
37 menu.addAction(open_action)
38 btn.setMenu(menu)
39 
40 window.setContextMenuPolicy(Qt.CustomContextMenu)
41 window.customContextMenuRequested.connect(show_menu)
42 
43 window.show()
44 sys.exit(app.exec_())
45 # *******************右键菜单--2**********************结束
右键菜单--法二

7、QCommandLinkButton

(1)框架

  扁平化

  继承QPushButton

(2)操作

 1 # *******************QCommandLinkButton**********************开始
 2 import sys
 3 from PyQt5.Qt import *
 4 
 5 app=QApplication(sys.argv)
 6 
 7 window=QWidget()
 8 window.setWindowTitle("QCommandLinkButton")
 9 window.resize(500,500)
10 
11 btn = QCommandLinkButton('标题','描述',window)
12 btn.setText("标题2")
13 btn.setDescription("描述。。。")
14 btn.setIcon(QIcon('xxx.png'))
15 
16 print(btn.description())
17 
18 window.show()
19 sys.exit(app.exec_())
20 # *******************QCommandLinkButton**********************结束
QCommandLinkButton操作

时间:2020-03-19   15:09:13

作者(QQ):931935931

posted @ 2020-03-19 15:11  红叶楠木  阅读(352)  评论(0编辑  收藏  举报