Wywołanie okienka z innego miejsca w programie PyQT5

Wywołanie okienka z innego miejsca w programie PyQT5
K9
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:141
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:

Kopiuj
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

Kopiuj
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:

Kopiuj
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ę?

Attrazione
Sformatuj kod na Pythona, jeżeli byś mógł.
K9
A co tu nie gra? To tylko fragmenty, żeby pokazać rozmieszczenie klas i metod.
Attrazione
Chodzi o formatowanie tekstu na forum na "Pythonowy" , w żadnym wypadku nie chodzi o sam twój kod.Po sformatowaniu jest to po prostu bardziej czytelny.
Attrazione
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 5 lat
  • Postów:6
0

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

Np:

Kopiuj
import win
import main
import rec

#robisz dalej co chcesz z funkcjami z tych plików
K9
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:141
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:

Kopiuj
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.

edytowany 1x, ostatnio: kamilos95
Attrazione
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 5 lat
  • Postów:6
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:

Kopiuj
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?

K9
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:141
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:

Kopiuj
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':

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

Zaś 'on_click3' jest postaci:

Kopiuj
   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ć?

Attrazione
Udało ci się sformatować tekst +1

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.