2014-02-21 10 views
0

Pastebin - My Full CodePython 3.x Tkinter, 엔트리 필드 문제?

내 입력 필드에 영향을주는 프로그램에 문제가 있습니다.

내 암호 입력을 사용하면 입력 내용이 StringVar에 저장되고 올바르게 입력되었는지 테스트하는 데 사용할 수 있습니다. 사용자가 관리자 설정 페이지에서 전자 메일 주소 또는 새 암호를 입력해도 작동하지 않으면 텍스트 변수는 항상 null입니다.

이것이 중요한 자격으로 가고 있으므로 크게 도움이 될 수 있다면 도와주세요.

문제있는 지역 :

변경 기능

#Function that changes the system email address 
def ChangeEmail(page): 

    global field_ChangeEmail 
    newEmail = field_ChangeEmail.get() 

    field_ChangeEmail.set('') 

    print(newEmail) 

    settingsDB = sqlite3.connect('Settings.db') 

    action = ("UPDATE ADMIN_SETTINGS set SYSTEM_EMAIL = '" + newEmail + "' where ID=1") 

    settingsDB.execute(action) 
    settingsDB.commit() 

    settingsDB.close() 

입력 필드 크기에 대한 place의 사용과 변수는 매우 비록 당신이 게시 코드 아무 문제가 없다

global field_ChangeEmail 
    entry_ChangeEmail = tk.Entry(page, textvariable = field_ChangeEmail, justify = CENTER, fg = settings_EntryFontColour, font = settings_EntryFont) 
    widthRatio = settings_AS_Column03Width 
    heightRatio = settings_AS_RowHeight 
    relativeX = settings_AS_Column03RelX 
    relativeY = settings_AS_Row01RelY - 0.0009 
    entry_ChangeEmail.place(width=screenWidth*widthRatio, height=screenHeight*heightRatio, relx=relativeX, rely=relativeY, x=-((screenWidth*widthRatio)*0.5), y=-((screenHeight*heightRatio)*0.5)) 
+1

읽을 코드가 많습니다. 문제와 관련없는 모든 것을 삭제할 수 있습니까? – Kevin

+0

버그를 찾기 위해 893 줄의 코드를 모두 읽을 수는 없습니다. 특히 코드가 게시 된 것과 똑같이 실행되지 않는 경우에는 더욱 그렇습니다. –

+0

관련된 두 영역으로 게시물을 업데이트했습니다. – RossGosling

답변

0

매우 이상합니다. 팩이나 그리드에 대해 배우는 것이 좋습니다. GUI를 많이 만들고, 더 쉽게 얻고, 시간을두고 유지 관리 할 것입니다. 다른 두 개 중 어느 것도 작동하지 않는 경우를 제외하고는 장소를 사용해서는 안됩니다.

위의 코드를 실행하고 작동시키기 위해 약간의 추가 작업을 추가하면 제대로 작동합니다. ChangeEmail은 항목 위젯에있는 값을 인쇄 한 다음 변수를 빈 문자열로 설정하여 항목 위젯을 지 웁니다. 나는 그것이 그것이하기로되어있는 것이라고 생각합니다.

텍스트 변수가 null (None?)으로 설정되면 코드의 다른 부분에서 발생합니다.