• 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

Object Storage Arubacloud
0 głosów
79 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 (252,740 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 114 wizyt
pytanie zadane 2 stycznia w Python przez ride3bike Nowicjusz (180 p.)
+1 głos
0 odpowiedzi 324 wizyt
pytanie zadane 6 maja 2022 w Python przez Marak123 Stary wyjadacz (11,190 p.)
0 głosów
0 odpowiedzi 326 wizyt
pytanie zadane 4 listopada 2020 w Python przez Jesioon Nowicjusz (120 p.)

92,555 zapytań

141,402 odpowiedzi

319,544 komentarzy

61,939 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...