How can I display an interactive family tree-style graph in PyQt6?

I need to display a programmatically generated graph that looks almost exactly like this one inside a PyQt widget in a manner which makes it fully keyboard-navigable and allows for user selection of nodes which triggers a function, taking the node’s associated text as an argument.

I’m still in the process of figuring out how Graphviz works and have so far managed to make this:

[dot]
digraph {
node [height=.1 shape=record]
edge [dir=none]
node0 [label=A]
node1 [label=B]
node2 [label=C]
node3 [label=D]
node4 [label=E]
node5 [label=F]
node6 [label=G]
node7 [label=H]
node8 [label=I]
node0 → node4
node0 → node1
node1 → node2
node1 → node3
node2 → node8
node2 → node7
node4 → node6
node4 → node5
}
[/dot]

Apart from the visual discrepancies (namely, the vertical layout and lack of 90 degree splits in the paths), my main problem is the interactivity since the output is a static image. I was hoping someone could help me solve both problems.