子窗口的设计大部分都是代码实现的 但是我等小白对代码实在是不慎精通,命令行控制python用了很久也挺好用的 ,想要设计点大型的或者功能分散的功能用命令实在是有点坑,所以萌生了写一个UI的想法,想来想去好像QT比较不错 研究研究吧 对于Qt设计师的教程一直不是很多,所以找了很多资料也踩了很多的坑,在这里记录一下,方便以后查阅,其实用代码实现的话也不难 但是既然有了设计师就用来看看
主要是利用按钮来实现子窗口切换的功能 ,用到的组件 stackedWidget(主要是这个)
扔三个按钮
在扔一个stackedWidget控件
扔个Lable标签标记一下 然后点上面的右上角的三角号切换到下一页
因为设计师默认只带了2个标签 所以第三个需要向后插入一页
三个页面搞定了
点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也差不多
就到这了