... my windows 10 crash the python running ... this is the output of crash:

Is a blog about python programming language. You can see my work with python programming language, tutorials and news.
import sys
import subprocess
from PyQt6.QtWidgets import (
QApplication, QMainWindow, QVBoxLayout, QTreeWidget, QTreeWidgetItem, QWidget
)
from PyQt6.QtWidgets import QHeaderView
from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QStyle
class DependencyViewer(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Dependency Checker")
# Maximizarea ferestrei la lansare
self.showMaximized()
# Creează un QTreeWidget pentru afișarea dependențelor
self.tree_widget = QTreeWidget()
self.tree_widget.setHeaderLabels(["Dependency", "Status"])
# Ajustează aliniamentul central pentru fiecare coloană
for i in range(2): # Pentru cele două coloane
self.tree_widget.headerItem().setTextAlignment(i, Qt.AlignmentFlag.AlignCenter)
# Configurarea automată a lățimii coloanelor
self.tree_widget.header().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
# Layout
layout = QVBoxLayout()
layout.addWidget(self.tree_widget)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
# Obține și afișează dependențele
self.display_dependencies()
def display_dependencies(self):
try:
# Rulează pipdeptree pentru a obține ierarhia dependențelor
result = subprocess.run(['pipdeptree', '--warn', 'silence'], capture_output=True, text=True)
dependencies = result.stdout.splitlines()
for line in dependencies:
# Determină nivelul de indentare pentru ierarhia dependențelor
indent_level = len(line) - len(line.lstrip())
dependency_name = line.strip()
# Creează un item pentru fiecare dependență
item = QTreeWidgetItem([dependency_name])
# Atribuie iconițe pe baza compatibilității (exemplu simplificat)
if "(*)" in dependency_name: # Exemplu de incompatibilitate (poți schimba după caz)
item.setIcon(0, self.style().standardIcon(QStyle.StandardPixmap.SP_DialogCancelButton))
item.setText(1, "Incompatible")
else:
item.setIcon(0, self.style().standardIcon(QStyle.StandardPixmap.SP_DialogApplyButton))
item.setText(1, "Compatible")
# Adaugă item-ul în arbore
if indent_level == 0:
self.tree_widget.addTopLevelItem(item)
else:
# Alege ultimul item părinte și adaugă dependența ca sub-item
parent_item = self.tree_widget.topLevelItem(self.tree_widget.topLevelItemCount() - 1)
parent_item.addChild(item)
# Extinde toate elementele din arbore
self.tree_widget.expandAll()
except Exception as e:
error_item = QTreeWidgetItem(["Error", str(e)])
error_item.setIcon(0, self.style().standardIcon(QStyle.StandardPixmap.SP_MessageBoxCritical))
self.tree_widget.addTopLevelItem(error_item)
if __name__ == "__main__":
from PyQt6.QtCore import Qt
app = QApplication(sys.argv)
viewer = DependencyViewer()
viewer.show()
sys.exit(app.exec())