2015-12-08 6 views
2

Я пытаюсь настроить проверку на текстовые поля ввода. Три из ящиков должны принимать только целые числа и один текст в виде почтового индекса. Я не уверен, нужно ли это делать в ранее определенной функции или при создании полей ввода. Также как я могу сделать значения из текстовых полей ввода доступными в функции QuoteCreation. Весь мой код ниже.Использование проверки в текстовом поле ввода

 from tkinter import * 


class quote(): 
def __init__(self, master): 

    self.master=master 

    self.master.title("Quote Screen") 
    self.master.geometry("2100x1400") 

    self.master.configure(background = "white") 
    self.Borras = PhotoImage(file = "Borras.Logo.2.gif") #sets up image 
    self.Borras.image = self.Borras 
    self.BorrasLabel = Label(self.master, image = self.Borras, bg = "white")#puts image onto label 
    self.BorrasLabel.place(anchor=NW) 

    self.Title = Label(self.master, text = "New Quote", font = ("calibri", 20), bg = "White") 
    self.Title.place(x=650, y = 10) 

    self.SubmitButton = PhotoImage(file = "Submit.Button.gif") #sets up image 
    self.SubmitButton.image = self.SubmitButton 
    self.SubmitButtonLabel = Button(self.master, image = self.SubmitButton, bg = "white", command= self.QuoteCreation)#puts image onto a button 
    self.SubmitButtonLabel.place(x=900, y=290) 




    PostCodeVar = StringVar() 
    PostCodeEntry = Entry(master,width=50, font=20, textvariable=PostCodeVar) 
    PostCodeEntry.place(x = 20, y = 150) 
    PostCodeVar.set("Please enter the Post Code") 
    PostCodeValue = PostCodeVar.get() 

    HeightVar = StringVar() 
    HeightEntry = Entry(master, width=50, font=20, textvariable=HeightVar) 
    HeightEntry.place(x = 20, y = 220) 
    HeightVar.set("Please enter the Height") 
    HeightValue = HeightVar.get() 

    LengthVar = StringVar() 
    LengthEntry = Entry(master, width=50, font=20, textvariable=LengthVar) 
    LengthEntry.place(x = 20, y = 290) 
    LengthVar.set("Please enter the Length") 
    LengthValue = LengthVar.get() 

    PitchVar = StringVar() 
    PitchEntry = Entry(master, width=50, font=20, textvariable=PitchVar) 
    PitchEntry.place(x = 20, y = 360) 
    PitchVar.set("Please enter the Pitch") 
    PitchValue = PitchVar.get() 

    RiseVar = StringVar() 
    RiseEntry = Entry(master, width=50, font=20, textvariable=RiseVar) 
    RiseEntry.place(x = 20, y = 430) 
    RiseVar.set("Please enter the Rise") 
    RiseValue = RiseVar.get() 

    self.SubmitButton = PhotoImage(file = "Submit.Button.gif") 
    self.SubmitButton.image = self.SubmitButton 
    self.SubmitButtonLabel = Button(self.master, image = self.SubmitButton, bg = "white", command= self.QuoteCreation)#puts image onto a button 
    self.SubmitButtonLabel.place(x=900, y=290) 




def on_button(self): 
    print(self.entry.get()) 

def QuoteCreation(self): 
    print(' ') 

def quitWindow(self): 
    self.master.destroy() 

def backToWelcome(self): 
    self.master.destroy() 
+0

Вы хотите, чтобы проверка выполнялась по типу пользователя или только после нажатия кнопки отправки? –

+0

Я бы хотел, чтобы это произошло на кнопку отправки, но хотелось бы, чтобы текст по умолчанию исчезал, когда пользователь нажимает на поле, если это возможно. –

+0

Я заметил, что вы никогда не принимали никакого ответа ни на один из ваших вопросов. Если вы этого не хотите, все в порядке. Просто напомню вам об этой функции. – timgeb

ответ

2

Вы должны настроить отдельные функции для проверки валидации при нажатии кнопки отправки.

Так, в качестве примера, ваша кнопка отправить может выглядеть немного так:

submitButton = Button(master, text="Submit", command=validation) 

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

def validation(): 
    postcode = PostCodeVar.get() 
    length = LengthVar.get() 
    pitch = PitchVar.get() 
    rise = RiseVar.get() 

    if postcodeCheck(postcode) == True and length.isdigit() == True and pitch.isdigit() == True and rise.isdigit() == True: 
     #carry out chosen process 

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

return True 

... так что соответствует исход, если заявление.

Я надеюсь, что это то, что вы искали, и можете приспособить пример к вашей конкретной проблеме!