[ad_1]
私はユーザーの入力名を挨拶する単純な Tk GUI を作成していました…ユーザーが数字を入力するときに入力エラーを発生させる必要があります。 ユーザーは文字のみを入力する必要があります。 私が試したところによると、姓ではなく名の入力のみがチェックされていました。 何を追加または編集すればよいですか?
よろしく..!!
私が試したこと:
import tkinter from tkinter import * import tkinter.messagebox root = Tk() root.geometry("300x130") root.resizable(0, 0) root.title("Greeting User") def button_enter(): while True: item1 = (input1.get()) item2 = (input2.get()) name = (item1 + " " + item2) for a in name: if (a.isalpha() or a.isspace()) or (a.isalpha() and a.isspace()) and (name.isalpha() and name.isspace()): greeting = Label(root, text="Hello, " + name + "!") greeting.grid(column=1, row=3) return True else: tkinter.messagebox.showinfo('Input Error', 'Numerical value detected. Try again.') return False label1 = Label(root, text="First Name:").grid(row=0) label2 = Label(root, text="Last Name:").grid(row=1) input1 = Entry(root, width=30, justify=CENTER) input1.grid(column=1, row=0) input1.get() input2 = Entry(root, width=30, justify=CENTER) input2.grid(column=1, row=1) input2.get() myButton = Button(root, width=10, text="Enter", command=button_enter) myButton.grid(column=0, row=3) root.mainloop()
解決策 1
OR は、2 つのブール入力を結合する条件です。
A = B OR C
両方が false の場合、false と評価されます。 それ以外の場合、true と評価されます。
したがって、B または C のいずれかが true の場合、もう一方の値に関係なく、A は true になります。
したがって、コード内では次のようになります。
for a in name: if (a.isalpha() or a.isspace()) or (a.isalpha() and a.isspace()) and (name.isalpha() and name.isspace()): ... return True
入力の最初の文字がアルファベットの場合、関数は True を返します。他の文字はまったく参照されず、ループは終了します。
を移動します。 return True
ループの後に移動し、条件を単純化します。ほとんどは無関係です。
[ad_2]
コメント