pyside6界面开发笔记(01)

  • 安装pyside6
pip install pyside6
  • vscode打开designer
pyside6-designer
  • ui文件转py文件
pyside6-uic 文件名.ui > 文件名.py

第一个pyside6程序

QWidget窗口的创建

基础窗口

import sys
from PySide6.QtWidgets import QApplication,QWidget

# 创建应用程序实例对象
app=QApplication(sys.argv)

#创建窗口实例对象
window=QWidget()

#显示窗口
window.show()

# 进入事件循环,若遇到退出命令,返回整数n
n=app.exec()

#结束程序
sys.exit(n)

简单交互案例

import sys
from PySide6.QtWidgets import QApplication,QWidget,QLabel
from PySide6.QtWidgets import QPushButton

# 创建应用程序实例对象
app=QApplication(sys.argv)

#创建窗口实例对象
window=QWidget()

window.setWindowTitle("你好")  #设置窗口标题
window.resize(300,150)         #设置窗口长和宽

#在窗口中创建文本实例对象
label=QLabel(window)

text="文本测试案例"                 
label.setText(text)                 #设置标签文字
label.setGeometry(80,50,150,20)     #设置标签的位置和长度

#在窗口中创建按钮实例对象
button=QPushButton(window)

button.setText("关闭")
button.setGeometry(120,100,50,20)    #设置按钮的位置和长度
button.clicked.connect(window.close) #将按钮的单击信号和窗口关闭槽信号连接

#显示窗口
window.show()
#结束程序
sys.exit(app.exec())

Pyside6 可视化编程架构

界面用函数来定义

将创建窗口控件的代码放在setupUi()中,按钮事件与窗口事件的关联也移到函数中。

setupUi()函数的形参是窗口,在主程序中调用setupUi(),并把窗口实例作为实参传递给setupUi()函数。

import sys
from PySide6.QtWidgets import QApplication,QWidget,QLabel
from PySide6.QtWidgets import QPushButton

def setupUi(window):              #形参window是一个窗口的实例对象
    
    window.setWindowTitle("你好")  #设置窗口标题
    window.resize(300,150)         #设置窗口长和宽

    #在窗口中创建文本实例对象
    label=QLabel(window)

    text="文本测试案例"                 
    label.setText(text)                 #设置标签文字
    label.setGeometry(80,50,150,20)     #设置标签的位置和长度

    #在窗口中创建按钮实例对象
    button=QPushButton(window)

    button.setText("关闭")
    button.setGeometry(120,100,50,20)    #设置按钮的位置和长度
    button.clicked.connect(window.close) #将按钮的单击信号和窗口关闭槽信号连接

if __name__=='__main__':
    app=QApplication(sys.argv)
    myWindow=QWidget()
    setupUi(myWindow)
    myWindow.show()
    sys.exit(app.exec())

界面用类来定义

将创建窗口控件的代码定义到MyUi类的 setupUi()函数中,各个控件是MyUi类中的属性,在主程序中用MyUi类实例化对象ui,

例如主程序中用 ui.button.setText("Close")语句修改了按的显示文字,按事件与窗日事件的关联也移到了主程序中。

import sys
from PySide6.QtWidgets import QApplication,QWidget,QLabel
from PySide6.QtWidgets import QPushButton

class MyUi():

    def setupUi(self,window):              #定义方法,形参window是一个窗口的实例对象
    
        window.setWindowTitle("你好")  #设置窗口标题
        window.resize(300,150)         #设置窗口长和宽

        #在窗口中创建文本实例对象
        self.label=QLabel(window)

        self.text="文本测试案例"                 
        self.label.setText(self.text)                 #设置标签文字
        self.label.setGeometry(80,50,150,20)     #设置标签的位置和长度

        #在窗口中创建按钮实例对象
        self.button=QPushButton(window)

        self.button.setText("关闭")
        self.button.setGeometry(120,100,50,20)    #设置按钮的位置和长度


if __name__=='__main__':

    app=QApplication(sys.argv)
    myWindow=QWidget()

    ui=MyUi()                                      #用MyUi类创建实例ui
    ui.setupUi(myWindow)                           #调用ui的方法setupUi(),并以窗口实例对象作为实参
    ui.button.setText("close")                     #重新设置按钮上显示的文字
    ui.button.clicked.connect(myWindow.close)

    myWindow.show()
    sys.exit(app.exec())

界面用模块来定义

​ 一个界面非常复杂,创建界面控件的代码也就会很多,如果使用模块和包的概念则程序中创建界面控件的类MyUi可以单独存放到一个文件中,在使用的时候用import语句MyUi类导人进来,实现控件代码与窗口代码的分离。

  • 在项目路径下创建一个文件myUI.py
from PySide6.QtWidgets import QPushButton,QLabel

class MyUi():

    def setupUi(self,window):               #定义方法,形参window是一个窗口的实例对象
    
        window.setWindowTitle("你好")       #设置窗口标题
        window.resize(300,150)              #设置窗口长和宽

        #在窗口中创建文本实例对象
        self.label=QLabel(window)

        self.text="文本测试案例"                 
        self.label.setText(self.text)            #设置标签文字
        self.label.setGeometry(80,50,150,20)     #设置标签的位置和长度

        #在窗口中创建按钮实例对象
        self.button=QPushButton(window)

        self.button.setText("关闭")
        self.button.setGeometry(120,100,50,20)    #设置按钮的位置和长度
  • 新建一个py文件
import sys
from myUI import MyUi
from PySide6.QtWidgets import QApplication,QWidget


if __name__=='__main__':

    app=QApplication(sys.argv)
    myWindow=QWidget()

    ui=MyUi()                                      #用MyUi类创建实例ui
    ui.setupUi(myWindow)                           #调用ui的方法setupUi(),并以窗口实例对象作为实参
    ui.button.setText("close")                     #重新设置按钮上显示的文字
    ui.button.clicked.connect(myWindow.close)

    myWindow.show()
    sys.exit(app.exec())

界面与逻辑的分离

创建myWidget()函数,在函数中用widget = QWidget(parent)语句创建QWidget类的实例对象 widget

这时首先执行的是 QWidget类的初始化函数__init__()经过初始化后的对象成为真正窗口。

注意myWidget()函数的返回值是窗口实例对象 widget。

import sys
from myUI import MyUi
from PySide6.QtWidgets import QApplication,QWidget

def myWidget(parent=None):

    widget=QWidget(parent)                       #创建QWidget类的对象,调用Qwidget的__init__()函数   
    ui=MyUi()                                    #用MyUi类创建实例ui
    ui.setupUi(widget)                           #调用ui的方法setupUi(),并以窗口实例对象作为实参
    ui.button.setText("close")                   #重新设置按钮上显示的文字
    ui.button.clicked.connect(widget.close)

    return widget

if __name__=='__main__':

    app=QApplication(sys.argv)
    myWindow=myWidget()    #调用myWidget()函数,返回值是窗口实例对象

    myWindow.show()
    sys.exit(app.exec())

笔记内容来自《QT for python Pyside6 gui 界面开发详解与实例》
笔记为笔者在《QT for python Pyside6 gui 界面开发详解与实例》后整理而成。
代码笔者均已验证

每日一更,持续更新中

传送门

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pyside6是一个用于创建跨平台图形用户界面(GUI)的Python库。当你在使用Pyside6时,可能会遇到一些界面显示异常的情况。这些异常可能包括但不限于界面元素错位、颜色异常、布局问题等。 解决Pyside6界面显示异常的方法有以下几种: 1. 检查代码逻辑:首先,你需要检查你的代码逻辑是否正确。确保你正确地设置了界面元素的位置、大小和属性。检查你的布局管理器是否正确地放置了界面元素。 2. 检查样式表:Pyside6支持使用样式表来自定义界面的外观。如果你使用了样式表,那么可能是样式表中的某些属性设置不正确导致了界面显示异常。请检查你的样式表并确保其中的属性设置正确。 3. 检查版本兼容性:Pyside6可能与不同版本的Python和操作系统存在兼容性问题。请确保你使用的Pyside6版本与你的Python版本和操作系统版本兼容。 4. 更新Pyside6:如果你使用的是旧版本的Pyside6,可能存在已知的界面显示异常问题。尝试更新到最新版本的Pyside6,以获得修复了这些问题的新功能和改进。 5. 查找文档和社区支持:如果以上方法都无法解决你的问题,建议查阅Pyside6的官方文档和社区支持。在官方文档中,你可以找到更多关于Pyside6的使用方法和常见问题的解答。同时,社区支持也是一个很好的资源,你可以在社区中提问并获得其他开发者的帮助和经验分享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值