QT For Python 学习备忘

文章目录[x]
  1. 1:QT For Python 学习备忘
  2. 1.1:01. 手写的界面
  3. 1.2:02. 从 UI 文件加载
  4. 1.3:03. 对 UI 文件转化成 py 文件之后的使用

QT For Python 学习备忘

01. 手写的界面

01. 代码

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit

app = QApplication([])

window = QMainWindow()

window.resize(500, 400)

window.move(300, 310)

window.setWindowTitle('薪资统计')

textEdit = QPlainTextEdit(window)

textEdit.setPlaceholderText("请输入薪资表")

textEdit.move(10,25)

textEdit.resize(300,350)

button = QPushButton('统计', window)

button.move(380,80)

window.show()

app.exec_()

02. 大纲框架

导入

APP 后端部分 ( 不显示, 处理信号与槽函数 )

Windows ( 控件的子项, 带菜单栏的控件 )

界面绘制

Windows 显示

界面保持显示

02. 从 UI 文件加载

01. 代码

from PySide2.QtWidgets import QApplication, QMessageBox

from PySide2.QtUiTools import QUiLoader

from PySide2.QtCore import QFile

class Stats:

def __init__(self):

# 从文件中加载UI定义

qfile = QFile("D:/Code/aistudio/LvJianYu/ui/jiemian.ui")

qfile.open(QFile.ReadOnly)

qfile.close()

# 从 UI 定义中动态 创建一个相应的窗口对象

# 注意:里面的控件对象也成为窗口对象的属性了

# 比如 self.ui.button , self.ui.textEdit

self.ui = QUiLoader().load(qfile)

self.ui.button1.clicked.connect(self.handleCalc)

def handleCalc(self):

info = self.ui.text1.toPlainText()

salary_above_20k = ''

salary_below_20k = ''

for line in info.splitlines():

if not line.strip():

continue

parts = line.split(' ')

parts = [p for p in parts if p]

name,salary,age = parts

if int(salary) >= 20000:

salary_above_20k += name + '\n'

else:

salary_below_20k += name + '\n'

QMessageBox.about(self.ui,

'统计结果',

f'''薪资20000 以上的有:\n{salary_above_20k}

\n薪资20000 以下的有:\n{salary_below_20k}'''

)

app = QApplication([])

stats = Stats()

stats.ui.show()

app.exec_()

02. 大纲框架

导入

定义新类

其中初始化构造函数作为 控件

读取加载 UI 文件

动态创建 窗口对象Windows ( 控件的子项, 带菜单栏的控件 )

信号与槽连接

动作函数

主流程

APP 后端部分

读取上面创建的类作为 Windows, 界面绘制, 信号与槽连接

Windows 显示

界面保持显示

03. 对 UI 文件转化成 py 文件之后的使用

01. 复杂使用

#导入

from PySide2.QtWidgets import QMainWindow, QApplication, QMessageBox, QWidget

from jiemian import Ui_Form

# 新建一个继承 QWidget 的叫 NewWindow(NW) 的类对象 待绑定对象 ( 空对象 )

class NW(QWidget):

def __init__(self):

super().__init__()#或者写为: super(NW, self).__init__() 特殊父类继承

self.setWindowTitle("加载")

self.resize(1000,1000)

#初始化构造函数

if __name__ == '__main__':

import sys

app = QApplication(sys.argv)

Window = NW()

#以下把所有控件怼到 NewWindow(NW) 这个类对象身上

from jiemian import Ui_Form

ui = Ui_Form()

ui.setupUi(Window)

#最终显示窗口 必备项

Window.show()

sys.exit(app.exec_())

#####################################

01. 简化过之后

#导入

from PySide2.QtWidgets import QMainWindow, QApplication, QMessageBox, QWidget

from jiemian import Ui_Form

# 新建一个继承 QWidget 的叫 NewWindow(NW) 的类对象 待绑定对象 ( 空对象 )

class NW(QWidget, Ui_Form):#多继承 既继承 QWidget 也继承 Ui_Form

def __init__(self):

super().__init__()#或者写为: super(NW, self).__init__() 特殊父类继承

self.setWindowTitle("加载")

self.resize(1000,1000)

self.setupUi(self)

# self.SAS()

#自定义信号与槽连接

# def SAS(self):

# pass

#初始化构造函数

if __name__ == '__main__':

import sys

app = QApplication(sys.argv)

Window = NW()

#最终显示窗口 必备项

Window.show()

sys.exit(app.exec_())

#####################################

 

点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像