前言
要查看已安装的包,必须先打开命令提示符,然后输入pip list才能查看(如下图)
但是很多人都不喜欢命令提示符那个黑糊糊的窗口,(我也是)不喜欢的扣个一
要用到的包
我们来做一个用显示已经安装的包的窗口
需要用到的包:
PyQt5
上一篇已经讲过怎么安装配置,这里不再赘述
用到的控件
按钮控件:QpushButton
布局管理器:Qboxlayout
可以让其中的控件沿垂直或水平方向布局
表格控件:QtableWidget
由行和列构成,行和列都有标题,可以自定义行列的标题,还可以修改数据
实现
这次我们不用qt设计师,这次我们一行一行的敲
我们新建一个文件,里面这样写:
- def p_l():
import os
text = os.popen("pip list")
s = 0
p = []
#
#
# print(c)
for i in text:
a = "".join(i)
c = a.split()
if s > 1:
p.append(c)
# print(c)
# print(f"执行{s}次")
s += 1
# print(p)
return p
把它命名为pl
用来返回已安装的库
再新建一个文件把它放在和pl同一个目录上
我们先把基础的代码写好
-
# coding=utf-8
import sys
import os
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import *
import pl
import easyguicolumn_names = ['包', '版本']
class MyWindow(QWidget):def __init__(self):
super().__init__()
self.selectedRowNo = None
self.data = pl.p_l()
self.initUI()def initUI(self):
self.resize(370, 640)
self.setWindowTitle('python包') # 设置窗口标题def main():
app = QApplication(sys.argv) # 创建应用程序对象
window = MyWindow()
window.show() # 显示窗口
sys.exit(app.exec_())
if __name__ == '__main__':
main()
然后创建一个按钮对象,这个是来刷新表格的
- btnup = QPushButton("刷新")
然后创建一个表格对象这个来显示已经安装的包
- # 创建表格控件对象
self.table = QTableWidget()
然后设置布局管理器
layout = QVBoxLayout(self)
# 将表格放到布局管理器中
layout.addWidget(btnup)
layout.addWidget(self.table)
btnup.clicked.connect(self.c_s)
然后开始设置表格
-
# 设置表格行数
self.table.setRowCount(len(self.data))
# 设置表格列数
self.table.setColumnCount(len(column_names))
# 设置表格字体
self.table.setFont(QFont("微软雅黑", 10))
# 设置表格禁止编辑
self.table.setEditTriggers(QAbstractItemView.EditKeyPressed)
# 设置表格列标签
self.table.setHorizontalHeaderLabels(column_names)
# 获得列视图
horizontalHeader = self.table.horizontalHeader()
# 设置表格列宽根据内容自适
horizontalHeader.setSectionResizeMode(QHeaderView.ResizeToContents)# 获得行视图
verticalHeader = self.table.horizontalHeader()
# 设置表格行高根据内容自适应
verticalHeader.setSectionResizeMode(QHeaderView.ResizeToContents)
# 设置表格列标签字体
horizontalHeader.setFont(QFont("微软雅黑", 10))
# 设置表格选择行为
self.table.setSelectionBehavior(QAbstractItemView.SelectRows)# 设置表格数据
for row in range(len(self.data)):
for col in range(len(self.data[row])):
# 设置表格单元格(row, col)数据,每一个单元都是QTableWidgetItem对象
self.table.setItem(row, col, QTableWidgetItem(self.data[row][col]))
写信号糟的代码
-
def c_s(self):
self.data = pl.p_l()
# 设置表格行数
self.table.setRowCount(len(self.data))
# 获得列视图
h = self.table.horizontalHeader()
# 设置表格列宽根据内容自适
h.setSectionResizeMode(QHeaderView.ResizeToContents)# 获得行视图
v = self.table.horizontalHeader()
# 设置表格行高根据内容自适应
v.setSectionResizeMode(QHeaderView.ResizeToContents)
# 设置表格列标签字体
h.setFont(QFont("微软雅黑", 10))
# 设置表格数据
for row in range(len(self.data)):
for col in range(len(self.data[row])):
# 设置表格单元格(row, col)数据,每一个单元都是QTableWidgetItem对象
self.table.setItem(row, col, QTableWidgetItem(self.data[row][col]))
运行结果
如图所示
我们先安装一个新包
然后点刷新,那个新包就显示出来了
总结
这个有点难度
难在列表的设置和刷新
特别是那个列表的刷新,我研究了很久
还有大家有什么想看的可以在评论区留言
最后大家不要忘了来一个三连,
下一篇来说如何显示库信息