Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件

Pyside2配合qt Designer 设计UI子窗口

  • Pyside2配合qt Designer 设计UI子窗口

Pyside2配合qt Designer 设计UI子窗口

子窗口的设计大部分都是代码实现的 但是我等小白对代码实在是不慎精通,命令行控制python用了很久也挺好用的 ,想要设计点大型的或者功能分散的功能用命令实在是有点坑,所以萌生了写一个UI的想法,想来想去好像QT比较不错 研究研究吧 对于Qt设计师的教程一直不是很多,所以找了很多资料也踩了很多的坑,在这里记录一下,方便以后查阅,其实用代码实现的话也不难 但是既然有了设计师就用来看看

主要是利用按钮来实现子窗口切换的功能 ,用到的组件 stackedWidget(主要是这个)
Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件_第1张图片

下面是步骤
Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件_第2张图片
创建一个Main Windows,
Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件_第3张图片

扔三个按钮
Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件_第4张图片
在扔一个stackedWidget控件
Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件_第5张图片
扔个Lable标签标记一下 然后点上面的右上角的三角号切换到下一页
Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件_第6张图片
因为设计师默认只带了2个标签 所以第三个需要向后插入一页
Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件_第7张图片
Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件_第8张图片
三个页面搞定了
Pyside2配合qt Designer 设计UI子窗口并直接调用UI文件_第9张图片
点page,page_2 ,page_3看看下面的currentIndex的值 这个就是对应的“页码”,可能叫索引吧
保存到python代码的工程目录下
名字随便 我就叫main.ui了
下面就需要代码搞定了 如果是List View控件做不用代码也能搞定翻页效果。那玩意默认传递有索引参数 只需要在qt设计师里面设置信号和槽就能实现切换了,但是按钮找了半天没找到合适的方法 只能代码实现了

from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtUiTools import QUiLoader

class Stats:

    def __init__(self):
        # 从文件中加载UI定义

        # 从 UI 定义中动态 创建一个相应的窗口对象
        # 注意:里面的控件对象也成为窗口对象的属性了
        # 比如 self.ui.button , self.ui.textEdit
        self.ui = QUiLoader().load('main.ui')
        self.ui.pushButton.clicked.connect(lambda: self.but_status(self.ui.pushButton))    #对应设计师里面的按钮变量
        self.ui.pushButton_2.clicked.connect(lambda: self.but_status(self.ui.pushButton_2))
        self.ui.pushButton_3.clicked.connect(lambda: self.but_status(self.ui.pushButton_3))

    def but_status(self,btn):
        a = btn.text()
        if a == '界面一':   #对应按钮的文本名字
            self.ui.stackedWidget.setCurrentIndex(0)
        if a == '界面二':
            print(a)
            self.ui.stackedWidget.setCurrentIndex(1)
        if a == '界面3':
            print(a)
            self.ui.stackedWidget.setCurrentIndex(2)

app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec_()

直接导入UI文件 所以没有了代码提示功能 就这样吧,调用跟转换成py也差不多

就到这了

你可能感兴趣的:(python,qt5)