第一步:用QT Designer画一个TreeWidget,存为treeview4.ui,这个处理前面TreeWidget那一节讲过,这里不细讲

treeview4.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'treeview4.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)
self.treeWidget.setGeometry(QtCore.QRect(150, 80, 411, 341))
self.treeWidget.setObjectName("treeWidget")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.treeWidget.headerItem().setText(0, _translate("MainWindow", "Key"))
self.treeWidget.headerItem().setText(1, _translate("MainWindow", "Value"))

第二步:代码分离。新建一个treeview4_test.py

from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyQt5 import QtCore, QtGui, QtWidgets
import treeview4
import treeview_data
import sys class MainCode(QMainWindow, treeview4.Ui_MainWindow): def __init__(self):
QMainWindow.__init__(self)
treeview4.Ui_MainWindow.__init__(self)
self.setupUi(self)
# 设置列宽
self.treeWidget.setColumnWidth(0, 200) _translate = QtCore.QCoreApplication.translate
self.initial_tree_view(_translate)
self.treeWidget.expandAll() def initial_tree_view(self, _translate):
list_objects = []
test1 = treeview_data.DataCollection()
test1.set_module({"Test1": "waiting"})
test1.add_item({"a1": "waiting"})
test1.add_item({"b1": "waiting"})
test1.add_item({"c1": "waiting"})
list_objects.append(test1) test2 = treeview_data.DataCollection()
test2.set_module({"Test2": "waiting"})
test2.add_item({"a2": "waiting"})
test2.add_item({"b2": "waiting"})
test2.add_item({"c2": "waiting"})
test2.add_item({"d2": "waiting"})
list_objects.append(test2) test3 = treeview_data.DataCollection()
test3.set_module({"Test3": "waiting"})
test3.add_item({"a2": "waiting"})
test3.add_item({"b2": "waiting"})
test3.add_item({"c2": "waiting"})
test3.add_item({"d2": "waiting"})
list_objects.append(test3) for object_num, object_module in enumerate(list_objects):
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
brush = QtGui.QBrush(QtGui.QColor(176, 165, 172))
brush.setStyle(QtCore.Qt.SolidPattern)
item_0.setBackground(0, brush)
for module_name, module_result in object_module.module.items():
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
item_0.setBackground(1, brush)
self.treeWidget.topLevelItem(object_num).setText(0, _translate("MainWindow", module_name))
self.treeWidget.topLevelItem(object_num).setText(1, _translate("MainWindow", module_result))
for item_num, item_dic in enumerate(object_module.items):
for item_name, item_result in item_dic.items():
item_1 = QtWidgets.QTreeWidgetItem(item_0)
self.treeWidget.topLevelItem(object_num).child(item_num).setText(0, _translate("MainWindow",
item_name))
self.treeWidget.topLevelItem(object_num).child(item_num).setText(1, _translate("MainWindow",
item_result)) if __name__ == "__main__":
app = QApplication(sys.argv)
md = MainCode()
md.show()
app.exec_()
# sys.exit(app.exec_())

其实这些代码和之前讲TreeWidget那一节的代码是一样的,不过进行了分离处理而已。

Python基础之实现界面和代码分离的更多相关文章

  1. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  2. python基础--小数据池,代码块的最详细、深入剖析

    本文转至太白金星 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存 ...

  3. python基础===如何优雅的写代码(转自网络)

    本文是Raymond Hettinger在2013年美国PyCon演讲的笔记(视频, 幻灯片). 示例代码和引用的语录都来自Raymond的演讲.这是我按我的理解整理出来的,希望你们理解起来跟我一样顺 ...

  4. python基础知识-8-三元和一行代码(推导式)

    python其他知识目录 1.三元运算(三目运算) 三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值格式:[on_true] if [expression] else [on_false]re ...

  5. python+Appium自动化:logging配置代码分离

    配置文件信息log.conf: [loggers]keys=root,simpleExample [logger_root]level=DEBUGhandlers=consoleHandler,fil ...

  6. Python基础之用PyQt5界面代码分离以及自定义一个槽函数

    最近开发一个项目,需要用到界面,遇到界面不能实时更新的问题,看到网上很多用槽函数,但是大多都是些button的,并不是我需要的,要么就是整数的,后来自己进行尝试,写了一个自定义的槽函数处理treewi ...

  7. Python基础篇(三)_函数及代码复用

    Python基础篇_函数及代码复用 函数的定义.使用: 函数的定义:通过保留字def实现. 定义形式:def <函数名>(<参数列表>): <函数体> return ...

  8. python基础之小数据池、代码块、编码和字节之间换算

    一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽 ...

  9. Python基础教程2上的一处打印缺陷导致的代码不完整#1

    #1对代码的完善的 出现打印代码处缺陷截图: 图片上可以看到,定义的request根本没有定义它就有了.这个是未定义的,会报错的,这本书印刷问题,这个就是个坑,我也是才发现.花了点时间脱坑. 现在发完 ...

随机推荐

  1. 大家看看大佬对Maven仓库的讲解,有何高明之处?

    Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依赖和插件的地方). 分类 maven的仓库只有两大类:1.本地仓库 2.远程仓库,在远程仓库中又分 ...

  2. 「10.13」毛一琛(meet in the middle)·毛二琛(DP)·毛三琛(二分+随机化???)

    A. 毛一琛 考虑到直接枚举的话时间复杂度很高,我们运用$meet\ in\ the\ middle$的思想 一般这种思想看似主要用在搜索这类算法中 发现直接枚举时间复杂度过高考虑枚举一半另一半通过其 ...

  3. Golang获取CPU、内存、硬盘使用率

    Golang获取CPU.内存.硬盘使用率 工具包 go get github.com/shirou/gopsutil 实现 func GetCpuPercent() float64 { percent ...

  4. 上手 Raspberry Pi Pico

    什么是 PICO Raspberry Pi Pico 是树莓派推出的一块基于 Arm Cortex-M0+ 内核的 MCU 的开发板,使用的 MCU 是树莓派自己研发的 Arm Cortex-M0+ ...

  5. Android Studio使用Gradle引入第三方库文件

    原文链接:https://blog.csdn.net/qiutiandepaomo/article/details/81538937 使用AndroidStudio开发Android应用的时候,会经常 ...

  6. 36、网卡绑定bond

    注意:虚拟机需要网卡模式为同一模式,否则无法进行通信: 36.1.mode0(平衡负载模式): 平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术. ...

  7. 使用Dice loss实现清晰的边界检测

    ​ 前言: 在深度学习和计算机视觉中,人们正在努力提取特征,为各种视觉任务输出有意义的表示.在一些任务中,我们只关注对象的几何形状,而不管颜色.纹理和照明等.这就是边界检测的作用所在. 关注公众号CV ...

  8. jenkins pipeline构建后返回构建结果给gitlab

    jenkins pipeline构建后返回构建结果给gitlab 使用场景 gitlab 合并请求时要求管道任务必须成功,否则无法执行合并操作,又不想使用gitlab ci 工具. 实现方法 1.Ge ...

  9. AcWing 1252. 搭配购买

    #include<bits/stdc++.h> #define N 10010 using namespace std; int fa[N],v[N],pr[N]; int vv[N],p ...

  10. margin属性总结,你想知道的这里都有

    一.前言 在学习CSS时,遇到的很多问题都是和margin有关,这个小怪兽总是出其不意的让我的界面排版变的混乱,还让人摸不着头脑,原因还是在于我对他的一些属性没有进行一个深入的了解,导致我在设计之初就 ...