Nie pokazujące się okienko

0

Witam.
Zaczynam naukę z PYTHON wraz z aplikacją okienkowa :) Lubię okienka bo coś widać :)

Natknąłem się na problem na samym początku:( okienko nie chce się wywołać.

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QMainWindow
from PyQt5 import uic
import sys

class UI(QMainWindow):
    def __int__(self):
        super(UI, self).__int__()
        uic.loadUi('gui.ui', self)
        self.setWindowTitle("Card Counter")
        self.show()

print("1")
app = QApplication(sys.argv)
print("2")
UIWindow = UI()
print("3")
app.exec_()
print("4")

print("4") już się nie wykonuje, kod wisi na app.exec_()

1
kacper10714 napisał(a):

Witam.
Zaczynam naukę z PYTHON wraz z aplikacją okienkowa :) Lubie okienka bo coś widać :)

Zły pomysł.

kacper10714 napisał(a):

Natknąłem się na problem na samym początku:( okienko nie chce się wywołać.

"Nie chce się wywołać" tzn. co dokładnie? Nie pokazuje się?

kacper10714 napisał(a):

print("4") już się nie wykonuje, kod wisi na app.exec_()

To, że kod wisi na app.exec_() to akurat normalne w QT. exec_() to jest to co uruchamia interfejs użytkownika, w momencie w którym wyjdziesz z exec_() zamkniesz też cały UI.

0

Tak okienko się nie pokazuje.

0

Nie wywołałeś .show() na QMainWindow.

0

Tylko, że w klasie class UI(QMainWindow): mam wywołanie show().
Tworząc obiekt tej klasy mam wywołanie show jak zrobię exec(), chyba, że źle to rozumiem.

How to Import a PyQt5 .ui File in a Python GUI

0
kacper10714 napisał(a):

Tylko, że w klasie class UI(QMainWindow): mam wywołanie show().
Tworząc obiekt tej klasy mam wywołanie show jak zrobię exec(), chyba, że źle to rozumiem.

How to Import a PyQt5 .ui File in a Python GUI

Nie słuchasz jak Ci się coś mówi.

Zamień

UIWindow = UI()
app.exec_()

na

UIWindow = UI()
UIWindow.show()
app.exec_()

i wtedy dyskutuj.

0

Nie słuchasz jak Ci się coś mówi.

po 1. kultury - zanim zaczniesz pisać, że ktoś się nie słucha to najpierw sprawdź źródła z których korzysta.
po 2. dlaczego kod w linku co podałem działa, zaglądałeś tam chociaż?
po 3. link do YT gdzie też tak samo robi link
po 4. wywołanie takie o jakim piszesz już robiłem i powoduje utworzenie pustego okna, a ładowane gui.ui nie jest puste

Pozdrawiam

1
kacper10714 napisał(a):

Nie słuchasz jak Ci się coś mówi.

po 1. kultury - zanim zaczniesz pisać, że ktoś się nie słucha to najpierw sprawdź źródła z których korzysta.
po 2. dlaczego kod w linku co podałem działa, zaglądałeś tam chociaż?
po 3. link do YT gdzie też tak samo robi link
po 4. wywołanie takie o jakim piszesz już robiłem i powoduje utworzenie pustego okna, a ładowane gui.ui nie jest puste

Pozdrawiam

To Ty przychodzisz na forum z pytaniem o pomoc, więc to Ty przede wszystkim powinieneś włożyć wysiłek w rozwiązanie problemu. Widzę że masz urażoną dumę, bo powiedziałem że nie słuchasz (podczas gdy nie słuchasz), jak ktoś stara Ci się pomóc.

Co do samego pytania, masz literówkę w kodzie.

class UI(QMainWindow):
    def __int__(self):
        super(UI, self).__int__()
kacper10714 napisał(a):

Nie słuchasz jak Ci się coś mówi.

po 1. kultury - zanim zaczniesz pisać, że ktoś się nie słucha to najpierw sprawdź źródła z których korzysta.

Mówiłem że nie wywołujesz .show(), i się okazało że nie wywołujesz - bo __int__() nigdy nie było zawołane.

Czym innym jest wpisać .show() w jakieś miejsce (tak jak Ty wpisałeś), a czym innym jest wywołać .show() - jak widać. W twoim przypadku nigdy nie było wywołane.

Co do źródeł, również nie musiałem z nich korzystać, żeby znaleźć błąd który popełniłeś - wystarczyło uważniej przeczytać kod.

kacper10714 napisał(a):

po 2. dlaczego kod w linku co podałem działa, zaglądałeś tam chociaż?

Nie musiałem zaglądać, żeby wiedzieć że okienko się nie pokazuje tylko dlatego, że nie wołasz .show()

kacper10714 napisał(a):

po 3. link do YT gdzie też tak samo robi link

Widocznie musiałeś coś źle przepisać.

kacper10714 napisał(a):

po 4. wywołanie takie o jakim piszesz już robiłem i powoduje utworzenie pustego okna, a ładowane gui.ui nie jest puste

To dlatego że loadUi też nigdy nie wołasz, bo __int__() nigdy nie jest wołane.

Jakbyś dodał te swoje print("4") również do __int__(), to zobaczyłbyś że ta metoda się nigdy nie wywołuje. Masz literówkę, bo powinno być __init__() (a nie __int__()).

0

No i dziękuje za znalezienie literówki - to się nazywa pomoc na forum.
P.S. nie przepisałem, a przez przypadek poszło autouzupełnienie.
.show() nie jest potrzebne - kod działa prawidłowo po poprawie __init__i ładuje utworzone GUI

Dziękuje i łapka w górę za pomoc.

EDIT: Poproszę o zamknięcie tematu :)

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