您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:PyQT5实现选项卡窗口、堆栈窗口、停靠窗口、子窗口

51自学网 2021-10-30 22:46:24
  python
这篇教程PyQT5实现选项卡窗口、堆栈窗口、停靠窗口、子窗口写得很实用,希望能帮到您。

一、选项卡控件QTabWidget

import sys# 使用调色板等from PyQt5.QtGui import QIcon# 导入QT,其中包含一些常量,例如颜色等# 导入常用组件from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QTabWidgetfrom PyQt5.QtWidgets import QFormLayout, QLineEdit,QLabelfrom PyQt5.QtGui import QMovie,QPixmapclass DemoWin(QMainWindow): def __init__(self):  super(DemoWin, self).__init__()  self.initUI() def initUI(self):  # 将窗口设置为动图大小  self.setFixedSize(500, 300)  self.tab1 = QWidget()  self.tab2 = QWidget()  self.tab3 = QWidget()  self.tabwidget = QTabWidget(self)  self.tabwidget.resize(500, 300)  self.tabwidget.addTab(self.tab1, "选项卡1")  self.tabwidget.addTab(self.tab2, "选项卡2")  self.tabwidget.addTab(self.tab3, "选项卡3")  # 分别加载三个Tab的内容  self.tab1UI()  self.tab2UI()  self.tab3UI()  # 添加窗口标题  self.setWindowTitle("TabWidgetDemo") def tab1UI(self):  layout = QFormLayout()  layout.addRow('姓名', QLineEdit())  layout.addRow('年龄', QLineEdit())  layout.addRow('住址', QLineEdit())  self.tab1.setLayout(layout) def tab2UI(self):  label = QLabel("",self.tab2)  movie = QMovie("./images/timg.gif")  label.setMovie(movie)  movie.start() def tab3UI(self):  label = QLabel("",self.tab3)  label.setPixmap(QPixmap("./images/ailusha.png"))if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 创建一个主窗口 mainWin = DemoWin() # 显示 mainWin.show() # 主循环 sys.exit(app.exec_())

实现效果:

二、堆栈窗口QStackedWidget

import sys# 使用调色板等from PyQt5.QtGui import QIcon# 导入QT,其中包含一些常量,例如颜色等# 导入常用组件from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QTabWidget, QListWidgetfrom PyQt5.QtWidgets import QFormLayout, QLineEdit, QLabel, QStackedWidget, QHBoxLayoutfrom PyQt5.QtGui import QMovie, QPixmapclass DemoWin(QWidget): def __init__(self):  super(DemoWin, self).__init__()  self.initUI() def initUI(self):  # 将窗口设置为动图大小  self.setFixedSize(600, 300)  self.list = QListWidget()  self.list.setMaximumWidth(100)  # 设置列表内容(stack的索引)  self.list.insertItem(0, '个人信息')  self.list.insertItem(1, '动画')  self.list.insertItem(2, '图片')  # 创建三个stack页面  self.stack1 = QWidget()  self.stack2 = QWidget()  self.stack3 = QWidget()  # 分别加载三个Stack的内容  self.stack1UI()  self.stack2UI()  self.stack3UI()  # 将三个stack页面加入stackWidget  self.stackWidget = QStackedWidget()  self.stackWidget.addWidget(self.stack1)  self.stackWidget.addWidget(self.stack2)  self.stackWidget.addWidget(self.stack3)  hbox = QHBoxLayout()  hbox.addWidget(self.list)  hbox.addWidget(self.stackWidget)  self.setLayout(hbox)  # 为List绑定事件,当条目改变时,切换stack(重要)  self.list.currentRowChanged.connect(self.stackSwitch)  # 添加窗口标题  self.setWindowTitle("StackWidgetDemo") def stack1UI(self):  layout = QFormLayout()  layout.addRow('姓名', QLineEdit())  layout.addRow('年龄', QLineEdit())  layout.addRow('住址', QLineEdit())  self.stack1.setLayout(layout) def stack2UI(self):  label = QLabel("", self.stack2)  movie = QMovie("./images/timg.gif")  label.setMovie(movie)  movie.start() def stack3UI(self):  label = QLabel("", self.stack3)  label.setPixmap(QPixmap("./images/ailusha.png")) # 切换list时触发槽函数切换Stack def stackSwitch(self, index):  self.stackWidget.setCurrentIndex(index)if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 创建一个主窗口 mainWin = DemoWin() # 显示 mainWin.show() # 主循环 sys.exit(app.exec_())

实现效果:

三、停靠控件QDockWidget

import sys# 使用调色板等from PyQt5.QtCore import Qtfrom PyQt5.QtGui import QIcon# 导入QT,其中包含一些常量,例如颜色等# 导入常用组件from PyQt5.QtWidgets import QApplication, QMainWindow, QListWidgetfrom PyQt5.QtWidgets import QLineEdit, QDockWidgetclass DemoWin(QMainWindow): def __init__(self):  super(DemoWin, self).__init__()  self.initUI() def initUI(self):  # 将窗口设置为动图大小  self.setFixedSize(600, 400)  # 创建一个DockWidget  self.items = QDockWidget()  # 定义一些内容(放到DockWidget中)  self.listWidget = QListWidget()  self.listWidget.setFixedSize(150, 300)  self.listWidget.addItem('item1')  self.listWidget.addItem('item2')  self.listWidget.addItem('item3')  self.items.setWidget(self.listWidget)  # 将DockWidget加到主窗口中,默认停靠在右边  self.addDockWidget(Qt.RightDockWidgetArea, self.items)  # 给主窗口添加一些控件  self.setCentralWidget(QLineEdit())  # 添加窗口标题  self.setWindowTitle("DockWidgetDemo")if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 创建一个主窗口 mainWin = DemoWin() # 显示 mainWin.show() # 主循环 sys.exit(app.exec_())

实现效果:

四、容纳多文档窗口(多子窗口)

import sys# 使用调色板等from PyQt5.QtCore import Qtfrom PyQt5.QtGui import QIcon# 导入QT,其中包含一些常量,例如颜色等# 导入常用组件from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEditfrom PyQt5.QtWidgets import QMdiArea, QMdiSubWindowclass DemoWin(QMainWindow): count = 0 def __init__(self):  super(DemoWin, self).__init__()  self.initUI() def initUI(self):  # 将窗口设置为动图大小  self.setFixedSize(800, 500)  self.mdi = QMdiArea()  bar = self.menuBar()  file = bar.addMenu("SubWin")  file.addAction("New")  file.addAction("Cascade")  file.addAction("Tiled")  file.triggered.connect(self.windowAction)  self.setCentralWidget(self.mdi)  # 添加窗口标题  self.setWindowTitle("SubWindowDemo") def windowAction(self, q):  # 当点击菜单栏中的New时,新建一个子窗口  if q.text() == "New":   # 为子窗口计数   DemoWin.count = DemoWin.count + 1   # 创建一个子窗口   sub = QMdiSubWindow()   # 为子窗口添加一个TextEdit控件   sub.setWidget(QTextEdit())   self.mdi.addSubWindow(sub)   sub.show()  elif q.text() == "Cascade": # 当点击菜单栏中的Cascade时,堆叠子窗口   self.mdi.cascadeSubWindows()  elif q.text() == "Tiled": # 当点击菜单栏中的Tiled时,平铺子窗口   self.mdi.tileSubWindows()if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 创建一个主窗口 mainWin = DemoWin() # 显示 mainWin.show() # 主循环 sys.exit(app.exec_())

实现效果:

到此这篇关于PyQT5实现选项卡窗口、堆栈窗口、停靠窗口、子窗口的文章就介绍到这了,更多相关PyQT5 窗口 内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


python广度搜索解决八数码难题
python pyecharts库的用法大全
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。