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
#!/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
#!/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.
# 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