@INFACT:
Erstmal Grundsätzliches zu GUI und Threads - alle GUI-Aktivitäten sollten im MainThread des Interpreters laufen, d.h. die GUI selbst ist single threaded und an den ersten Thread gebunden.
Alle anderen GUIfernen Dinge, wie bei Dir der Scan-"Prozeß", können in Threads gepackt werden. Willst Du von dort aus mit der GUI interagieren, brauchst Du einen Mechanismus, der das threadsafe bewerkstelligen kann. Für PyQt solltest Du den Thread von QThread ableiten, die Klasse bringt ein threadasfe signaling mit.
zu Deinem Code:
Was ist das "import main"? Die Methode main() rufst Du nirgens auf, wie mir scheint, versteckt sich dahinter Dein Scanprozeß?
Du leitest ein QDialog von Ui_MainWindow ab?
In QDialog dürften ~80% der MainWindow-Methoden nicht definiert sein, sollte Deine ui-Datei eine solche benutzen, wird schon der Startversuch mit einem AttributeError quittiert. Also darauf achten, das Deine Basisklasse zu der ui-Basisklasse paßt. Desweiteren muß Du die ui-Datei nicht explizit übersetzen, das geht auch on-the-fly (da gibts hier schon viele Beiträge dazu).
Wenn Du ein paar Sachen des Scanprozesses zeigst, kann man Dir vllt. auch bei der Threadumsetzung helfen.