私のプログラムでは、tkinter guiのエントリウィジェットからデータが追加されるsqliteデータベースがあります。私は、データが検証された後にデータベースに追加されるようにしたいと思います。なぜなら、現在のところ検証はないからです。Python - tkinterの入力フィールドを検証する方法
たとえば、以下のmy関数では、customerID、forename、surname、addressおよび電話番号をデータベースのcustomerテーブルに追加します。私はcustomerIDエントリが整数だけを受け入れるようにしたいと思います。forename、surname、addressはNOT NULL、phoneNumberEntryは整数だけを受け入れることができます。
私は人々がvalidatecommandを使用しているのを見ましたが、データをデータベースに追加するコマンドを既に使用しているので、私はそれを実装できるとは思いません。
def appendToCustomerTableEntry(event):
top = Toplevel()
top.title("Add to customer table")
Label(top, text = "customerID: ").grid(sticky = E)
customerIDEntry = Entry(top)
customerIDEntry.grid(row = 0, column = 1)
Label(top, text = "Forename: ").grid(row = 1, sticky = E)
customerForenameEntry = Entry(top)
customerForenameEntry.grid(row = 1, column = 1)
Label(top, text = "Surname: ").grid(row = 2, sticky = E)
customerSurnameEntry = Entry(top)
customerSurnameEntry.grid(row = 2, column = 1)
Label(top, text = "Address: ").grid(row = 3, sticky = E)
customerAddressEntry = Entry(top)
customerAddressEntry.grid(row = 3, column = 1)
Label(top, text = "Phone Number: ").grid(row = 4, sticky = E)
customerPhoneNumberEntry = Entry(top)
customerPhoneNumberEntry.grid(row = 4, column = 1)
exitButton = Button(top, text = "Exit", command = top.destroy)
exitButton.grid(row = 5, column = 2, sticky = W)
appendButton = Button(top, text = "Append", command = lambda:appendToCustomerTable
(customerIDEntry.get(), customerForenameEntry.get(), customerSurnameEntry.get(),
customerAddressEntry.get(), customerPhoneNumberEntry.get()))
appendButton.grid(row = 5, column = 1, sticky = E)
def appendToCustomerTable(customerID, Forename, Surname, Address, TelephoneNumber):
c.execute("INSERT INTO customerTable VALUES (?, ?, ?, ?, ?);", (customerID, Forename, Surname, Address, TelephoneNumber))
conn.commit()
あなたは書きました:_Iは、人々がvalidatecommandを使用し見てきましたが、私は私はすでににデータを追加するためのコマンドを使用していていることを実現することができるだろうとは思いませんあなたはそれをどういう意味ですか? 'validatecommand'の使用は、後でどのようにデータを使用するかとは全く関係ありません。これは単に不正な入力(整数フィールドの文字など)を防ぐためのメカニズムです。 –
@BryanOakleyええ私は今何かを考え出しました。私はちょっと前に混乱していただけだったので、このポストを作ることに急いだ。今私は問題の一部が解決されるように整数を受け入れることができる方法を持っています、私はちょうど検証の残りの部分を理解する必要があります – JoeW373
あなたの質問への答えのように思えるのは、すべての入力を受け取り、それらを検証し、データベースにデータを挿入する前にその関数を呼び出すことができます。それはそれとは違うことを何を求めていますか? –