PYQT学习笔记一
1. pyqt包安装
pip install PyQt5
pip install PyQt5-tools
2. pyqt的基本代码结构
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv) # 实例化一个应用对象
window = QWidget() # 窗口界面的基本控件,它提供了基本的应用构造器。默认情况下,构造器是没有父级的,没有父级的构造器被称为窗口(window)。
window.setWindowTitle("软件名称")
window.resize(600, 500) # 窗口大小
btn = QPushButton(window) # btn 绑定到Windows界面里
btn.setText("我是按钮!")
btn.resize(120, 30) # 按钮大小
btn.move(100, 100) # 按钮位置
btn.setStyleSheet('background-color:green;font-size:16px;')
label = QLabel(window)
label.setText('我是标签!')
label.move(200,200)
#label.setStyleSheet('background-color:green;font-size:16px;')
# label.show()
window.show() # 让控件在桌面上显示出来。控件在内存里创建,之后才能在显示器上显示出来。
sys.exit(app.exec_()) # 确保主循环安全退出,app.exec_()界面循环,防止闪退
3. PyQt5面向对象开发模板设置代码
### test.py
'''
1.创建一个应用程序
2.控件操作
3.执行应用,进入消息循环
'''
'''
1.创建控件
window = QWidget()
btn = QPushButton(window)
2.设置控件
window.resize(50,50)
3.展示控件
window.show()
'''
from PyQt5.Qt import *
import sys
class Window(QWidget):
def __init__(self):
super().__init__() # 调用父类QWidget中的init方法
self.setWindowTitle("软件名称") # 调用自身的属性和方法
self.resize(600, 500)
self.func_list()
def func_list(self):
self.func()
def func(self):
btn = QPushButton(self)
btn.setText("软件内容")
btn.resize(120, 30)
btn.move(100, 100)
btn.setStyleSheet('background-color:green;font-size:20px;')
if __name__ == '__main__':
app = QApplication(sys.argv) # 创建一个应用程序对象
# sys.argv可以接收用户命令行启动时所输入的参数,根据参数执行不同程序
# qApp 为全局对象
print(sys.argv)
print(app.arguments())
print(qApp.arguments())
# 以上三个输出结果是一样的
window = Window()
window.show()
sys.exit(app.exec_()) # 0是正常退出
# app.exec_() 进行循环
# sys.exit() 检测退出原因
###test2.py
import sys
from PyQt5.Qt import *
from test import Window
app = QApplication(sys.argv)
window = Window() # 通过调用test里的Window类,实例化一个对象
window.show()
sys.exit(app.exec_())
test.py 和 test2.py 都能实现以下效果
4. QObject的三种用法
'''
obj = QObject()
obj.setObjectName('name') # 设置一个唯一名称
print(obj.objectName())
obj.setProperty('level1','第一') # 给对象添加一个属性和值
obj.setProperty('level2','第二')
print(obj.property('level2'))
print(obj.dynamicPropertyNames()) # 获取所有setProperty()设置属性的对象和属性名称
'''
from PyQt5.Qt import *
import sys
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("object对象") # 软件名称
self.resize(600, 500)
self.func_list()
def func_list(self):
self.func()
self.func1()
def func(self):
obj = QObject()
obj.setObjectName('第一个Object对象') # 一个标识符
print(obj.objectName())
def func1(self):
obj1 = QObject()
obj1.setProperty('level1', '第一')
obj1.setProperty('level2', '第二')
print(obj1.property('level1'))
print(obj1.dynamicPropertyNames())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
# print(window.windowTitle())
window.show()
sys.exit(app.exec_())
5. QObject-对象类型判定和控件继承类型
'''
isWidgetType() # 判断类型
inherits('') # 是否继承与某个类
'''
from PyQt5.Qt import *
import sys
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("类型判定")
self.resize(600,500)
self.func_list()
def func_list(self):
self.func()
def func(self):
obj = QObject()
win = QWidget()
btn = QPushButton()
label = QLabel()
obj_list = [obj, win, btn, label]
for o in obj_list:
# print(o.isWidgetType())
print(o.inherits('QPushButton'))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())