2017-11-24 22 views
-1

両方のエントリに同じ入力があり、その値がcsvファイルに出力されない場合は、エラーメッセージを表示したいと思います。助けてくれますか?Python:エラーメッセージが表示されますか?

from tkinter import * 
import csv 

class App(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.pack() 
     self.output() 

    def output(self): 
     self.playerA = Label(text='state player Name A:').pack() 
     self.E1 = Entry(root, bd=5) 
     self.E1.pack() 

     self.playerB = Label(text='state player Name A:').pack() 
     self.E2 = Entry(root, bd=5) 
     self.E2.pack() 


     self.b = Button(root, text='Submit', command=self.writeToFile) 
     self.b.pack(side=BOTTOM) 

    def writeToFile(self): 
     with open('ttest.csv', 'a') as f: 
      w=csv.writer(f, quoting=csv.QUOTE_ALL) 
      w.writerow([self.E1.get()]) 

if __name__ == "__main__": 

    root=Tk() 
    root.title('insert new scores') 
    root.geometry('200x200') 
    app=App(master=root) 
    app.mainloop() 
    root.mainloop() 
+0

どのようなヘルプが必要ですか?ウィジェットを作成する方法を知っているように見え、ボタンが押されたときに関数を呼び出す方法も分かっています。あなたは問題のどの部分を苦労していますか? –

答えて

0

あなたはraiseそれをEntryExceptionクラスを作成し、可能性の両方の入力フィールドの値が等しい場合:

両方のエントリが異なる場合、レコードがCSVファイルに書き込まれます。
異なる場合、EntryExceptionが発生し、ファイルに何も書き込まれません。

from tkinter import * 
import csv 

class EntryException(BaseException): 
    pass 

class App(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.pack() 
     self.output() 

    def output(self): 
     self.playerA = Label(text='state player Name A:').pack() 
     self.E1 = Entry(root, bd=5) 
     self.E1.pack() 

     self.playerB = Label(text='state player Name A:').pack() 
     self.E2 = Entry(root, bd=5) 
     self.E2.pack() 


     self.b = Button(root, text='Submit', command=self.writeToFile) 
     self.b.pack(side=BOTTOM) 

    def writeToFile(self): 
     if self.E1.get() == self.E2.get(): 
      raise EntryException 
     else: 
      with open('ttest.csv', 'a') as f: 
       w=csv.writer(f, quoting=csv.QUOTE_ALL) 
       w.writerow([self.E1.get()]) 

if __name__ == "__main__": 

    root=Tk() 
    root.title('insert new scores') 
    root.geometry('200x200') 
    app=App(master=root) 
    app.mainloop() 
    root.mainloop() 
0

両方の数字が等しい場合は、メッセージボックスを使用してメッセージ/エラーを表示することもできます。

from tkinter import messagebox 

def writeToFile(self): 
    if(self.E1.get()==self.E2.get()): 
     messagebox.showinfo("Message", "Both Values are Equal") 
    else: 
     with open('test.csv', 'a') as f: 
      w=csv.writer(f, quoting=csv.QUOTE_ALL) 
      w.writerow([self.E1.get()]) 
0

あなたが書き込む前にWRITETOFILE()関数で簡単なチェックでやりたいことができます...

def writeToFile(self): 
     #start new chunk 
     from tkinter import messagebox 
     if self.E1.get() == self.E2.get(): 
      messagebox.showerror('Error Message', "Both Users have the name '{}'".format(self.E1.get())) 
      return 
     #end new chunk 
     with open('ttest.csv', 'a') as f: 
      w=csv.writer(f, quoting=csv.QUOTE_ALL) 
      w.writerow([self.E1.get(), self.E2.get()]) 
      #      ^^^^^^^^^^^^^^^^ 

のTkinterのメッセージボックスは、いくつかの簡単なダイアログメッセージのオプションがあります:
showerror()showwarning()を、およびshowinfo()。それらと遊んで、あなたが好きなルックスと気分を与えるものを選んでください。また、あなたがそれを見落としてしまった場合に備えて、CSVファイルに第2のユーザ名を書き込むことが含まれていました。

関連する問題