At first, one can simply `from PySide6.QtWidgts import *` but this causes problems. So at some point you want to lookup which class is in which module so you can make your imports explicit. This is a quick and dirty tool to help you do that. ## Example Output ``` QApplication: QtWidgets QColor: QtGui QCoreApplication: QtCore QFont: QtGui QFontMetrics: QtGui QHostAddress: QtNetwork QPainter: QtGui QPainterPath: QtGui QPen: QtGui QTimer: QtCore QUdpSocket: QtNetwork QWidget: QtWidgets Qt: QtGui QtCore: ? QtGui: ? QtNetwork: ? QtWidgets: ? ``` ## Lookup In Files ```py #!/usr/bin/env python import sys import re try: import PySide6.QtCore as QtCore import PySide6.QtGui as QtGui import PySide6.QtWidgets as QtWidgets import PySide6.QtNetwork as QtNetwork except ModuleNotFoundError: print("Can't find PySide6") exit(1) dir_QtCore = dir(QtCore) dir_QtGui = dir(QtGui) dir_QtWidgets = dir(QtWidgets) dir_QtNetwork = dir(QtNetwork) d = {} for x in dir_QtCore: d[x] = "QtCore" for x in dir_QtGui: d[x] = "QtGui" for x in dir_QtWidgets: d[x] = "QtWidgets" for x in dir_QtNetwork: d[x] = "QtNetwork" args = sys.argv[1:] found = set() for arg in args: try: with open(arg) as f: a = f.read() qs = re.findall(r"Q[a-zA-Z]+",a) for x in qs: found.add(x) except Exception: print(f"# Fail Read {arg}") continue rows = [] for x in sorted(found): if x in d: rows.append([x,d[x]]) else: rows.append([x,"?"]) for x,y in rows: print(f"{x}: {y}") ``` ## Lookup Command Line Args ```py #!/usr/bin/env python from jda_rich_table import RichTable import sys try: import PySide6.QtCore as QtCore import PySide6.QtGui as QtGui import PySide6.QtWidgets as QtWidgets import PySide6.QtNetwork as QtNetwork except ModuleNotFoundError: print("Can't find PySide6") exit(1) dir_QtCore = dir(QtCore) dir_QtGui = dir(QtGui) dir_QtWidgets = dir(QtWidgets) dir_QtNetwork = dir(QtNetwork) d = {} for x in dir_QtCore: d[x] = "QtCore" for x in dir_QtGui: d[x] = "QtGui" for x in dir_QtWidgets: d[x] = "QtWidgets" for x in dir_QtNetwork: d[x] = "QtNetwork" args = sys.argv[1:] rows = [] for x in args: if x in d: rows.append([x,d[x]]) else: rows.append([x,"?"]) # Print out for x,y in rows: print(f"{x}: {y}") ``` ## Import Generator Replace the bit at the end and it can generate the right import declaration. ```py # Print out from collections import defaultdict as ddict imps = ddict(set) for cls,mod in rows: imps[mod].add(cls) for mod in sorted(imps.keys()): clss = ", ".join(sorted(imps[mod])) print(f"from PySide6.{mod} import {clss}") ``` Example output: ``` from PySide6.QtCore import QCoreApplication, QTimer from PySide6.QtGui import QColor, QFont, QFontMetrics, QPainter, QPainterPath, QPen, Qt from PySide6.QtNetwork import QHostAddress, QUdpSocket from PySide6.QtWidgets import QApplication, QWidget ```