• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PyQt5 błąd -1073740791 (0xC0000409). Po kliknięciu przycisku aplikacja się wyłącza

VPS Starter Arubacloud
0 głosów
98 wizyt
pytanie zadane 3 stycznia 2023 w Python przez stachu2822 Nowicjusz (160 p.)

Cześć,

robię prosty projekt, estetyczny ekran logowania się w QtDesignerze. Pierwszy ekran włącza się normalnie, jednak po kliknięciu przycisku do logowania się, aplikacja się wyłącza. Oto błąd: 

Traceback (most recent call last):
  File "C:\Users\swron\PycharmProjects\pythonQt5\venv\main.py", line 25, in gotologin
    login = LoginScreen()
            ^^^^^^^^^^^^^
  File "C:\Users\swron\PycharmProjects\pythonQt5\venv\main.py", line 42, in __init__
    self.login.clicked.connect(self.login_function)
    ^^^^^^^^^^
AttributeError: 'LoginScreen' object has no attribute 'login'

A oto mój kod: 


import sys
import os

from PyQt5.uic import loadUi
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *


class WelcomeScreen(QDialog):

    def __init__(self):
        super(WelcomeScreen, self).__init__()

        logMenuPath = os.path.dirname(os.path.abspath(__file__))
        logMenu_ui_file = os.path.join(logMenuPath, 'loginMenu.ui')

        if not os.path.exists(logMenu_ui_file):
            print("Plik nie istnieje lub ścieżka jest niepoprawna: {}".format(logMenu_ui_file))
        else:
            loadUi(logMenu_ui_file, self)

        self.login.clicked.connect(self.gotologin)

    def gotologin(self):
        login = LoginScreen()
        widget.addWidget(login)
        widget.setCurrentIndex(widget.currentIndex() + 1)


class LoginScreen(QDialog):

    def __init__(self):
        super(LoginScreen, self).__init__()

        logScreenPath = os.path.dirname(os.path.abspath(__file__))
        log_ui_file = os.path.join(logScreenPath, 'loginGraphics.ui')

        loadUi(log_ui_file, self)

        self.LEPasswordInput.setEchoMode(QtWidgets.QLineEdit.Password)

        self.login.clicked.connect(self.login_function)

    def login_function(self):
        username = self.LELoginInput.text()
        password = self.LEPasswordInput.text()

        if len(username) == 0 or len(password) == 0:
            self.error.setText('error')


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

    welcome = WelcomeScreen()

    widget = QStackedWidget()
    widget.addWidget(welcome)

    widget.setFixedHeight(800)
    widget.setFixedWidth(1200)

    widget.show()

    try:
        sys.exit(app.exec_())
    except:
        print('Exiting...')

Moje pliki w QtDesignerze:

https://www.dropbox.com/sh/ny70rdcy5c1cf7l/AABPUEQ8nK_hGd7mJZFQRtHIa?dl=0

1 odpowiedź

0 głosów
odpowiedź 4 stycznia 2023 przez VBService Ekspert (255,440 p.)

W klasie LoginScreen

class LoginScreen(QDialog):
 
    def __init__(self):
        super(LoginScreen, self).__init__()
 
        logScreenPath = os.path.dirname(os.path.abspath(__file__))
        log_ui_file = os.path.join(logScreenPath, 'loginGraphics.ui')
 
        loadUi(log_ui_file, self)
 
        self.LEPasswordInput.setEchoMode(QtWidgets.QLineEdit.Password)
 
        self.login.clicked.connect(self.login_function)
 
    def login_function(self):
        username = self.LELoginInput.text()
        password = self.LEPasswordInput.text()
 
        if len(username) == 0 or len(password) == 0:
            self.error.setText('error')

"odwołujesz" się do button-a o name=login a w loginGraphics.ui masz

 <widget class="QPushButton" name="pushButton">

 

ten button masz tylko loginMenu.ui

<widget class="QPushButton" name="login">

 

Podobne pytania

0 głosów
2 odpowiedzi 177 wizyt
pytanie zadane 2 stycznia w Python przez ride3bike Nowicjusz (180 p.)
+1 głos
0 odpowiedzi 361 wizyt
pytanie zadane 6 maja 2022 w Python przez Marak123 Stary wyjadacz (11,190 p.)
0 głosów
0 odpowiedzi 391 wizyt
pytanie zadane 4 listopada 2020 w Python przez Jesioon Nowicjusz (120 p.)

92,839 zapytań

141,780 odpowiedzi

320,848 komentarzy

62,171 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...