Dlaczego środowisko nie podpowiada metody .connect?

0

Witam,

tworze aplikacje z wykorzystaniem QtDesigner ładując pliki .ui. Wszystko działa tylko zastanawiam się, dlaczego nie ma podpowiedzi podczas pisania kodu dla clicked.connect(jakiś_def) np:

self.gui_symuluj = self.findChild(QPushButton, 'pushButton_2')
self.gui_symuluj.clicked.connect(self.symuluj)

self.gui_symuluj. <- nie ma podpowiedzi clicked.
self.gui_symuluj.clicked. <- nie ma podpowiedzi connect.

Oczywiście, nie przejmując się i wpisując bez podpowiedzi linijki są dobrze interpretowane i kod działa.

2

Czy Twoje IDE wie jaki ma interpreter?

0

Używam PyCharm
Konfiguracja interpreterów projektu:
screenshot-20230406190048.png

Może rzeczywiście mam coś skopane ale myślę, że mogę liczyć na pomoc :)

0

Może spróbuj zaktualizować wtyczkę PyQT? Wyszukaj wtyczkę PyQT i upewnij się, że jest ona zainstalowana i włączona.

0

Witam
Święta, święta i po świętach, wszystkim najlepszego :)

Wracając do tematu, przeinstalowałem na nowo PyQt5 i bez zmian :(

0

Witam
Wracając do tematu, to poczyniłem pewne testy, próby :)
Zainstalowałem python 3.11.3 - brak podpowiedzi clicked.
Odinstalowałem poprzednie i zainstalowałem starszą python 3.10.11 - również brak podpowiedzi clicked.
Znów odinstalowałem poprzednią wersję i zainstalowałem python 3.8.10 - także brak podpowiedzi clicked.

screenshot-20230417182150.png

Zainstalowałem inne środowisko Spyder i tam zauważyłem, że jest podpowiedź tylko trochę dziwna:

screenshot-20230417182246.png

Przykładowy kod testowy:

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


class Ui(QMainWindow):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('gui.ui', self)

        self.button = QtWidgets.QPushButton("&Print", self)
        #self.button = self.findChild(QtWidgets.QPushButton, 'printButton')
        self.button.clicked.connect(self.printButtonPressed)

        self.show()

    def printButtonPressed(self):
        print('printButtonPressed')


app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()

Jeśli tworze ręcznie obiekt przez self.button = QtWidgets.QPushButton("&Print", self) wtedy mam piękne i klarowne podpowiedzi z biblioteki QAbstractButton i pyqtBoundSignal.

Jednak nie zadowala mnie to w 100% bo mimo, że stworzyłem sobie wygląd aplikacji w Designer i ładuje gui.ui to ręczne tworzenie obiektu mi dokłada element i rozwala pomysł na szybkie stworzenie aplikacji.

Jeżeli chce (nie wiem jak to nazwać, znaleźć, przypisać wskaźnik do obiektu?) użyć self.button = self.findChild(QtWidgets.QPushButton, 'printButton') to w magiczny sposób ww. podpowiedzi znikają.

Czy mogę prosić o pomoc?

0

Problem rozwiązany. Znalazłem rozwiązanie. Jedyne sensowne jest konwersja pyuic5 -x gui.ui -o gui.py
Potem ładowanie class Ui_MainWindow(object): i działa wszystko jak należy.

Przykład kodu:

from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import QMainWindow, QAbstractButton
import sys
from gui import Ui_MainWindow


class Ui(QMainWindow):
    def __init__(self):
        super(Ui, self).__init__()
        # uic.loadUi('gui.ui', self)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        #self.button = QtWidgets.QPushButton("&Print", self)
        # self.button = self.findChild(QtWidgets.QPushButton, 'printButton')
        self.ui.printButton.clicked.connect(self.printButtonPressed)

        self.show()

    def printButtonPressed(self):
        print('printButtonPressed')


app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()


Zrzuty z działania:

screenshot-20230418180331.png

screenshot-20230418180353.png

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.