Wywołanie okienka z innego miejsca w programie PyQT5

0

Cześć, chcę sobie wywołać okienko w PyQT z innego miejsca w programie niż główna część programu i nie uzyskuję oczekiwanego efektu.

Plik main.py w skrócie:

class SG(QWidget):
   def __init__(self):
      super().__init__()
      self.initUI()

   def initUI(self):
      self.resize(300, 150)
      self.center()
   ...

if __name__ == '__main__':
   app = QApplication(sys.argv)
   sg = SG()

   sys.exit(app.exec_())

Plik win.py

class Window2(QMainWindow):
   def __init__(self):
      super().__init__()
      self.initPopup()

   def initPopup(self):
      self.resize(500, 500)
      self.setWindowTitle("window2")
      self.show()

Plik rec.py:

class Rec:
    def box_ex(self):
        print('extract')
        self.w = Window2().initPopup()

I generalnie problem polega na tym, że nie jestem w stanie wywołać okienka Window2() z metody box_ex. Natomiast funkcjonalność ta działa z pliku main.py. Co robię źle i co by należało poprawić, żeby program działał tak jak tego oczekuję?

0

Dodaj import twoich plików, do wybranego przez ciebie pliku, w którym chcesz aby dana funkcja była wykonywana i odczytywana.

Np:

import win
import main
import rec

#robisz dalej co chcesz z funkcjami z tych plików
0
Attrazione napisał(a):

Dodaj import twoich plików, do wybranego przez ciebie pliku, w którym chcesz aby dana funkcja była wykonywana i odczytywana.

Np:

import win
import main
import rec

#robisz dalej co chcesz z funkcjami z tych plików

Oczywiście, że mam importy dołączone w plikach, po prostu ich tutaj nie zamieszczałem. Problemem nie jest to, że program się nie kompiluje czy nie uruchamia, nawet nie to że w trakcie działania pojawia się jakiś błąd, a to, że okienko wywołane z rec.py pomimo show w ogóle się nie pokazuje.

0
kamilos95 napisał(a):
Attrazione napisał(a):

Dodaj import twoich plików, do wybranego przez ciebie pliku, w którym chcesz aby dana funkcja była wykonywana i odczytywana.

Np:

import win
import main
import rec

#robisz dalej co chcesz z funkcjami z tych plików

Oczywiście, że mam importy dołączone w plikach, po prostu ich tutaj nie zamieszczałem. Problemem nie jest to, że program się nie kompiluje czy nie uruchamia, nawet nie to że w trakcie działania pojawia się jakiś błąd, a to, że okienko wywołane z rec.py pomimo show w ogóle się nie pokazuje.

Tak w sumie to mogłeś napisać o tych użytych importach, bo nie zawsze wszystko jest oczywiste.

A wracając do problemu, to najlepiej by było, rozwiązać ten problem jakbyś nie podawał pliku bądź plików w skrócie, a w całości, oczywiście, jeśli tylko chcesz.

A jeżeli miałbym wnioskować coś po obecnym kodzie to, mam pytanie.Wywołujesz tę funkcję box_ex?

0
Attrazione napisał(a):
kamilos95 napisał(a):
Attrazione napisał(a):

Dodaj import twoich plików, do wybranego przez ciebie pliku, w którym chcesz aby dana funkcja była wykonywana i odczytywana.

Np:

import win
import main
import rec

#robisz dalej co chcesz z funkcjami z tych plików

Oczywiście, że mam importy dołączone w plikach, po prostu ich tutaj nie zamieszczałem. Problemem nie jest to, że program się nie kompiluje czy nie uruchamia, nawet nie to że w trakcie działania pojawia się jakiś błąd, a to, że okienko wywołane z rec.py pomimo show w ogóle się nie pokazuje.

Tak w sumie to mogłeś napisać o tych użytych importach, bo nie zawsze wszystko jest oczywiste.

A wracając do problemu, to najlepiej by było, rozwiązać ten problem jakbyś nie podawał pliku bądź plików w skrócie, a w całości, oczywiście, jeśli tylko chcesz.

A jeżeli miałbym wnioskować coś po obecnym kodzie to, mam pytanie.Wywołujesz tę funkcję box_ex?

Generalnie kod jest dość długi, dlatego nie chciałem wrzucać całości. Ogólnie w klasie SG w metodzie initUI, zdefiniowany jest przycisk, który aktywuje metodę 'on_click3':

self.rU.clicked.connect(lambda: self.on_click3())

Zaś 'on_click3' jest postaci:

   def on_click3(self):
      Rec().box_ex()

Czyli jest wywoływana. Reszta dzieje się już w funkcjie box_ex. Zrobiłem teraz test i w klasie Window2() dodałem print('test') i co ciekawe to jest wywoływane. Nadal nie rozumiem co może być nie tak, że okienko już nie chce się pokazać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1