2015-02-03 2 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 

бы просто на самом деле, как некоторую помощь с подключением запуска программы на время цикла. заранее спасибо.

ответ

1

Ваш цикл while вводится только после того, как mainloop завершен, что после закрытия окна Tk. Вы хотите сделать регулярное выражение, когда вы нажимаете кнопку, которая находится в функции show_entry_fields. ваше выражение также не имеет большого смысла, оно никогда не будет истинным:

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() 
Смежные вопросы