2015-02-03 4 views
-1

기본적으로 자동차 등록 번호를 확인하고 속도 계산을 수행 한 다음 잘못된 등록 번호가 있거나 사용자 번호가 잘못되어 메모장에 사용자 세부 정보를 기록하는 프로그램을 만들었습니다. 속도 제한, 그것은 잘 작동합니다. 이제 더 많은 대화 형 대화 상자를 만들려고 노력 중이지만 tkinter를 사용하지만 while 루프에 연결하지 못하는 이유가 있습니다.tkinter가 while 루프/if 문에 연결되지 않음

의 Tkinter 프로그램 :

import tkinter 
from tkinter import * 
import random 
from random import randint 
import re 

def show_entry_fields(): 
    print("First Name: %s\nLast Name: %s\nRegistration number:%s" %  (Fname.get(), Lname.get(), reg.get())) 

momma = Tk() 
Label(momma, text="First Name").grid(row=0) 
Label(momma, text="Last Name").grid(row=1) 
Label(momma, text="please enter your registration number:").grid(row=2) 

Fname = Entry(momma) 
Lname = Entry(momma) 
reg = Entry(momma) 

Fname.grid(row=0, column=1)#colim = Insert the widget at this column. 
Lname.grid(row=1, column=1) 
reg.grid(row=2, column=1) 

Button(momma, text='Quit', command=momma.quit).grid(row=3, column=0,    sticky=W, pady=4) 
Button(momma, text='Show', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4) 

mainloop() 



while reg== re.match('^[A-Z]{2}[0-9]{2}[A-Z]{3}$', reg): 
    w= Message(momma, text="that is a valid registration number") 
    w.pack() 
    break 

것 정말 while 루프에 프로그램의 시작을 연결하는 몇 가지 도움이있다. 미리 감사드립니다.

답변

1

while 루프는 메인 루프가 완료된 후 (Tk 창이 닫힌 이후)에만 입력됩니다. 당신이 원하는 것은 show_entry_fields 함수에있는 버튼을 누르면 정규식을 수행하는 것입니다. 당신의 while 표현은별로 의미가 없습니다. 진실이 될 수 없습니다.

from tkinter import * 
import re 

def show_entry_fields(): 
    print("First Name: %s\nLast Name: %s\nRegistration number:%s" % (Fname.get(), Lname.get(), reg.get())) 
    if re.match('^[A-Z]{2}[0-9]{2}[A-Z]{3}$', reg.get()): 
     w.configure(text='That is a valid registration number') 
     # Do what you want to do after a valid registration number is entered, close the window, call a new function, whatever you want 
    else: 
     w.configure(text='Invalid registration number') 

momma = Tk() 
Label(momma, text="First Name").grid(row=0) 
Label(momma, text="Last Name").grid(row=1) 
Label(momma, text="please enter your registration number:").grid(row=2) 
w= Label(momma, text="") 

Fname = Entry(momma) 
Lname = Entry(momma) 
reg = Entry(momma) 

Fname.grid(row=0, column=1)#colim = Insert the widget at this column. 
Lname.grid(row=1, column=1) 
reg.grid(row=2, column=1) 
w.grid(row=4, column=0, columnspan=2, sticky=W+E) 

Button(momma, text='Quit', command=momma.quit).grid(row=3, column=0,sticky=W, pady=4) 
Button(momma, text='Show', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4) 

momma.mainloop()