PyQt5Day03--程序基本结构之面向对象版本+控件学习

1、程序基本结构之面向对象版本

(1)开发阶段(自己写好并测试)——设置为模版qto

 1 from PyQt5.Qt import *
 2 
 3 class Window(QWidget):
 4     def __init__(self):
 5         super().__init__()
 6         self.setWindowTitle("帅炸了")
 7         self.resize(500, 500)
 8         self.setup_ui()
 9 
10     def setup_ui(self):
11         label=QLabel(self)
12         label.setText('你好,明天')
13 
14 if __name__ == '__main__':
15     import sys
16 
17     app=QApplication(sys.argv)
18 
19     window=Window()
20     window.show()
21     sys.exit(app.exec_())

(2)别人调用时:

 1 import sys
 2 from PyQt5.Qt import *
 3 from menu import Window
 4 
 5 app=QApplication(sys.argv)
 6 
 7 window=Window()
 8 
 9 window.show()
10 sys.exit(app.exec_())

2、控件学习

(1)概念

  控件:一个程序界面上的各个独立元素——一块矩形区域;

  具备不同的功能:用户点击、接收用户输入、展示内容、存放其他控件等等

  常用控件:按钮、输入控件、展示控件、容器控件、结构控件、滚动控件、辅助控件和其他。如下图所示:

3、对象的名称和属性的设置

   Object的总体框架学习如下:

  对象的名称和属性学习框架:

(1)QObject.qss的设置

 1 QLabel#notice{
 2     font-size:20px;
 3     color:gray;
 4     border:lpx solid gray;
 5     border-radius:8px;
 6 }
 7 QLabel#notice[notice_level="normal"]{
 8     color:green;
 9     border-color:green
10 }
11 QLabel#notice[notice_level="warning"]{
12     color:yellow;
13     border-color:yellow
14 }
15 QLabel#notice[notice_level="error"]{
16     color:red;
17     border-color:red
18 }

(2)对象的相关操作以及案例:

 1 from PyQt5.Qt import *
 2 
 3 class Window(QWidget):
 4     def __init__(self):
 5         super().__init__()
 6         self.setWindowTitle("QObject的学习")
 7         self.resize(500, 500)
 8         self.setup_ui()
 9 
10     def setup_ui(self):
11         #self.QObject_ceshi()
12         self.QObject_dxsx()
13 
14     def QObject_ceshi(self):
15         mros=QObject.mro()  # 测试QObject含有继承哪些类
16         for mro in mros:
17             print(mro)
18 
19     def QObject_dxsx(self):
20         # *********** 测试API**************开始
21         # obj=QObject()
22         # obj.setObjectName('notice')
23         # print(obj.objectName())  # notice
24         #
25         # obj.setProperty('notice_level','error')
26         # obj.setProperty('notice_level2','warning')
27         #
28         # print(obj.property('notice_level'))  #error
29         # print(obj.dynamicPropertyNames()) # 两个,如下
30         # # [PyQt5.QtCore.QByteArray(b'notice_level'), PyQt5.QtCore.QByteArray(b'notice_level2')]
31         # *********** 测试API**************结束
32 
33         # **************案例*****************开始
34         with open('QObject.qss',mode='r') as f:
35             qApp.setStyleSheet(f.read())
36 
37             label=QLabel(self)
38             label.setObjectName('notice')  # 添加对象名,跟随颜色
39             label.setProperty('notice_level','warning')
40             label.setText('你好,明天')  # 颜色改变
41 
42             label2 = QLabel(self)
43             label2.setObjectName('notice')
44             label2.setProperty('notice_level', 'error')
45             label2.setText('人狠话不多') # 颜色改变
46             label2.move(100,100)
47 
48             btn=QPushButton(self)
49             btn.setText('哈哈') # 颜色未改变
50             btn.move(50,40)
51 
52             # 想要label3不跟随颜色,在QObject.qss做修改
53             label3=QLabel(self)
54             label3.setText('XXXXX')
55             label3.move(150,150)
56         # **************案例*****************结束
57 
58 if __name__ == '__main__':
59     import sys
60 
61     app=QApplication(sys.argv)
62     window=Window()
63     window.show()
64     sys.exit(app.exec_())
View Code

时间:2020-02-28   11:53:48

作者QQ:931935931

posted @ 2020-02-28 11:54  红叶楠木  阅读(312)  评论(0编辑  收藏  举报