基础控件
前面介绍的Designer工具可以帮助我们快速地完成前端窗口的开发,掌握这个工具还不够,我们还因该学习如何使用代码完成pyqt的开发,学习代码会让我们对pyqt的底层更加理解,还可以更加方便地实现对现有功能的升级和维护。
首先我们来回顾一下之前提到过的QWidget代码基础框架
from PySide6.QtWidgets import QApplication,QWidgetclass MyWindow(QMainWindow): # 自定义的窗口继承QWidgetdef __init__(self):super().__init__() # 继承父类的初始化方法if __name__ == '__main__':app = QApplication() # QApplication作为应用程序的入口点window = MyWindow() # 实例化window.show() # 展示app.exec() # 退出
基础框架搭建出来只是一个空白的窗口,需要我们往其中加入控件完成一个自己想要的功能,这里介绍三种最基础的控件
按钮
我们在使用一种类型的控件的时候,首先需要从Qt Widgets中导入其类型,按钮的类型为QPushButton
from PySide6.QtWidgets import QPushButton
然后在自定义的窗口中创建一个按钮,第一个参数为按钮的名字,第二个参数为按钮的布局,如果没有布局,则传入self
class MyWindow(QMainWindow):def __init__(self):super().__init__()btn = QPushButton("按钮",self)
运行结果:
标签
标签的类别为``QLabel` ,其使用方法和按钮类似
标签的类别为``QLabel` ,其使用方法和按钮类似
class MyWindow(QMainWindow):def __init__(self):super().__init__()lb = QLabel("我是标签",self)
行编辑框
行编辑框的类别为QLineEdit
class MyWindow(QMainWindow):def __init__(self):super().__init__()line = QLineEdit("输入文字",self)
属性设置
前面我们只是简单地介绍了一下如何创建一些简单地控件,但想要让其在正确的位置,有正确的大小,显示正确的内容等等,还需要针对控件进行进一步的属性设置。
首先我们可以利用Designer设计师工具,它为我们提供了每一个控件详细地公共属性和独有属性,如果我们要针对某个控件进行设置,只需要在Designer中找到对应的属性名,然后使用set + 属性名
的方式进行设置即可,比如,我想调整一下按钮的位置和大小,在Designer中找到对应的属性名为Geometry,然后调用对应的方法即可
class MyWindow(QMainWindow):def __init__(self):super().__init__()btn = QPushButton("按钮",self)btn.setGeometry(100,100,200,100)
运行结果:
登录框
现在,让我们利用这三种最基础的控件实现一个登录框窗口(代码版)
from PySide6.QtWidgets import QApplication,QWidget,QPushButton,QLabel,QLineEditclass MyWindow(QWidget):def __init__(self):super().__init__()# 创建控件account_label = QLabel("账号",self)password_label = QLabel("密码",self)account_line = QLineEdit(self)password_line = QLineEdit(self)submit_btn = QPushButton("登录",self)# 设置控件属性account_label.setGeometry(10, 20, 50, 15)password_label.setGeometry(10, 50, 50, 15)account_line.setGeometry(70, 20, 113, 20)# PlaceholderText为占位符文本,通常用于写一些提示信息account_line.setPlaceholderText("请输入账号")password_line.setGeometry(70, 50, 113, 20)password_line.setPlaceholderText("请输入密码")submit_btn.setGeometry(60, 90, 51, 23)if __name__ == '__main__':app = QApplication()window = MyWindow()window.show()app.exec()
运行结果: