제가 만든 앱의 위젯이 텍스트를 못 읽어옵니다........

제가 만든 앱의 위젯이 텍스트를 못 읽어옵니다........

작성일 2022.11.07댓글 1건
    게시물 수정 , 삭제는 로그인 필요

 안녕하세요. 파이썬과 kivy를 통해, 간단한 회원가입 및 로그인 기능이 있는 GUI앱을 만들고 있습니다.
현재 제 앱의 큰 문제점은, 앱을 열자마자 로그인을 하려고 하면, 텍스트인풋 위젯들이 전~혀 문자열을 못 읽어온다는 것입니다... 혹시나 해서 sqlite 구문에 문제가 있는지 db파일도 살펴봤는데 전혀 문제가 없고 순진히 위젯의 문제였습니다... 어떻게 하면 처음 켤때부터 위젯이 문자열을 읽어오게 할까요???

<main.py>
"""
작성자 : 외기러기
작성일 : 2022-11-07
내가 만든 이 코드를 당신 또는 다른사람이 먼저 만들었다고 거짓말하지 마세요!!
"""


from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.screenmanager import Screen, ScreenManager
import sqlite3


#SQLite DB 인터페이스 클래스
class DBInterFace:
    conn = sqlite3.connect("LoginApp.db", isolation_level=None)
    cur = conn.cursor()
    def __init__(self):
        self.cur.execute("CREATE TABLE IF NOT EXISTS UserInfo(nickname text, mailaddr text, password text);")
    def __del__(self):
        self.conn.close()
    def selectByNickPswd(self, nickname, password):
        print("nickname :", nickname)
        print("password :", password)
        try:
            self.cur.execute("SELECT ROWID FROM UserInfo WHERE nickname=? AND password=?", (str(nickname), str(password)))
            result = self.cur.fetchone()
            print("Select result :", result)
        except Exception as err:
            print("Select query failed :", str(err))
            result = None
        if result == None:
            return result
        else:
            return result[0]
    def insertNewMember(self, nickname, mailaddr, password):
        print("nickname :", nickname)
        print("mailaddr :", mailaddr)
        print("password :", password)

#로그인 화면 클래스
class LoginScreen(AnchorLayout):
    titleimage = ObjectProperty()
    loginWin = ObjectProperty()
    regWin = ObjectProperty()
    nickname = ObjectProperty()
    mailaddr = ObjectProperty()
    password = ObjectProperty()
    pswdagain = ObjectProperty()
    def __init__(self, **kwargs):
        super(LoginScreen, self).__init__(**kwargs)
        self.titleimage.bind(on_press=self.showLoginWin)
        self.remove_widget(self.loginWin)
        self.remove_widget(self.regWin)
    def showLoginWin(self, *args):
        self.titleimage.unbind(on_press=self.showLoginWin)
        self.add_widget(self.loginWin)
        self.remove_widget(self.regWin)
    def login(self, *args):
        result = LoginApp.dbinterface.selectByNickPswd(self.nickname.text, self.password.text)
        if result != None:
            LoginApp.screen_manager.current = "Main Screen"
        else:
            Popup(title="Login Failed!", content=Label(text="Your login has failed ;("), size_hint=(1, 0.2), auto_dismiss=True).open()
    def showRegWin(self, *args):
        self.remove_widget(self.loginWin)
        self.add_widget(self.regWin)
    def register(self, *args):
        result = LoginApp.dbinterface.insertNewMember(self.nickname.text, self.mailaddr.text, self.password.text)
        if result == None:
            Popup(title="Registration Succeeded!", content=Label(text="You can login from now! :)"), size_hint=(1, 0.2), auto_dismiss=True).open()
        else:
            Popup(title="Registration Failed!", content=Label(text="Your registration has failed ;("), size_hint=(1, 0.2), auto_dismiss=True).open()

#로그인 이후 메인 화면 클래스
class MainScreen(AnchorLayout):
    pass

#앱 전체를 나타내는 클래스
class LoginApp(App):
    screen_manager = ScreenManager()
    dbinterface = DBInterFace()
    def build(self):
        screen = Screen(name="Login Screen")
        screen.add_widget(LoginScreen())
        self.screen_manager.add_widget(screen)

        screen = Screen(name="Main Screen")
        screen.add_widget(MainScreen())
        self.screen_manager.add_widget(screen)

        return self.screen_manager
if __name__ == "__main__":
    LoginApp().run()

<login.kv>
<LoginScreen>:
    titleimage: titleimage
    loginWin: loginWin
    regWin: regWin
    nickname: nickname
    mailaddr: mailaddr
    password: password
    pswdagain: pswdagain
    Button:
        id: titleimage
        size: root.height, root.width
        background_normal: "login_image.jpg"
        background_down: "login_image.jpg"
    GridLayout:
        id: loginWin
        cols: 2
        size_hint: 1, 0.2
        background_color: "white"
        Label:
            text: "Nickname:"
            width: 100
            color: "black"
        TextInput:
            id: nickname
        Label:
            text: "Password:"
            width: 100
            color: "black"
        TextInput:
            id: password
        Button:
            id: loginbtn
            text: "Login!"
            on_press: root.login()
        Button:
            text: "Register"
            on_press: root.showRegWin()
    GridLayout:
        id: regWin
        cols: 2
        size_hint: 1, 0.4
        background_color: "white"
        Label:
            text: "Input nickname:"
            width: 100
            color: "black"
        TextInput:
            id: nickname
        Label:
            text: "Input mail address:"
            width: 100
            color: "black"
        TextInput:
            id: mailaddr
        Label:
            text: "Input password:"
            width: 100
            color: "black"
        TextInput:
            id: password
        Label:
            text: "Input password again:"
            width: 100
            color: "black"
        TextInput:
            id: pswdagain
        Button:
            text: "To login window"
            on_press: root.showLoginWin()
        Button:
            text: "Register!"
            on_press: root.register()

<MainScreen>:
    Image:
        source: "main_image.jpg"
        size: root.height, root.width

<결과창>
PS C:\KivyApk\Login_App> & C:/Users/lje64/AppData/Local/Programs/Python/Python310/python.exe c:/KivyApk/Login_App/main.py [INFO ] [Logger ] Record log in C:\Users\lje64\.kivy\logs\kivy_22-11-07_46.txt [INFO ] [deps ] Successfully imported "kivy_deps.gstreamer" 0.3.3 [INFO ] [deps ] Successfully imported "kivy_deps.angle" 0.3.2 [INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.3.1 [INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.4.5
중략.......
[INFO ] [Base ] Start application main loop
[INFO ] [GL ] Unpack subimage support is available nickname : password : Select result : None [INFO ] [Base ] Leaving application in progress...


#제가 만든 이론입니다만 #제가 만든건데 안팔려요

profile_image 익명 작성일 -

Select result : None [

select한 결과값이 없네요?

한컴 독스 리더

... 다 읽어본다음에 위쪽 상단에 있는 x표시 누르고... 답을 받아 다시 올려요.. 제가 질문한 것 다 대답해주시면 감사하겠습니다..!!ㅠ 한컴에서 만든 앱이 아닙니다....

텍스트를 음성으로 바꿔주는

제가 목감기가 심해서 목소리가 잘 안나오는데요 텍스트로 입력하면 말로 읽어주는 앱을 찾고있어요 대화를 빨리... 목소리 좋아해요 네이버에서 만든 클로바 더빙 추천드려요

안드로이드 홈위젯 좀하시는분

위젯 앱하나 개발할라고 기획하고있네요.... 제가생각하는 방법은 이방법이 제일... 넣고 텍스트를 읽어온뒤에 그구문단위로 끊어서...

얼굴 옆모습 길이 줄이는 방법

... 제가 광대뼈가 튀어나와서 그런지 아님 걍 얼굴이... 꼼꼼히 읽어보고 재능기부 차원의 무료답변을 원장이... 이메일이 옵니다. 그 이전부터 (1) 1994년 서울의대 우등졸업...