1

Python 2.7.3 を使用して、次の tkinter コードを作成しました。このコードでは、ユーザーが 2 つの値を GUI に入力する必要があります。これらの値が送信され、GUI が閉じられます。ただし、送信ボタンに問題があります。ユーザーが [送信] をクリックすると、次のことが起こります。 1. 値 1 に値があるかどうかを確認する if ステートメントが表示されます。2. 値 2 に値があるかどうかを確認する if ステートメント、ない場合はメッセージ ボックスが表示されます。3. 値 1 と値 2 の両方に値がある場合、GUI は閉じられます。

ただし、これは私が問題を抱えている場所です。次のテストを実行しました。2. 値 1 に値を入力し、値 2 に値を入力しなかった場合、2 番目に if ステートメントがトリガーされました。これは問題ありませんでした。3. 値 1 と値 2 に値を入力すると、GUI が閉じられました。問題はありませんでしたが、Python コードがハングし、コードの最後の行「print c」が発生しませんでした。

これは何が原因ですか?

アイデアは、この GUI を関数ファイルの入力に使用することです。このコードは GUI のテストです。

import Tkinter
import sys
import tkMessageBox


class GUI(Tkinter.Tk):
"""docstring for Values"""
   def __init__(self, parent):
       Tkinter.Tk.__init__(self,parent)
       self.parent = parent

       ###if user hits close button
       def callback():
            if tkMessageBox.askokcancel("Quit", "Do you really wish to quit?"):
            self.destroy()
            sys.exit()

       self.protocol("WM_DELETE_WINDOW", callback) 
       self.initialize()

  def initialize(self):
      self.grid()
      stepOne = Tkinter.LabelFrame(self, text=" 1. Enter Values ")
      stepOne.grid(row=0, columnspan=7, sticky='W',padx=5, pady=5, ipadx=5, ipady=5)
      self.Val1Lbl = Tkinter.Label(stepOne,text="Value 1")
      self.Val1Lbl.grid(row=0, column=0, sticky='E', padx=5, pady=2)
      self.Val1Txt = Tkinter.Entry(stepOne)
      self.Val1Txt.grid(row=0, column=1, columnspan=3, pady=2, sticky='WE')
      self.Val2Lbl = Tkinter.Label(stepOne,text="Value 2")
      self.Val2Lbl.grid(row=1, column=0, sticky='E', padx=5, pady=2)
      self.Val2Txt = Tkinter.Entry(stepOne)
      self.Val2Txt.grid(row=1, column=1, columnspan=3, pady=2, sticky='WE')

      self.val1 = None
      self.val2 = None

      self.SubmitBtn = Tkinter.Button(stepOne, text="Submit",command=self.submit)
      self.SubmitBtn.grid(row=4, column=3, sticky='W', padx=5, pady=2)

  def submit(self):
      self.val1=self.Val1Txt.get()
      if self.val1=="":
         Win2=Tkinter.Tk()
         Win2.withdraw()
         tkMessageBox.showinfo(message="Value 1 has no values entered")

      self.val2=self.Val2Txt.get()
      if self.val2=="":
         Win2=Tkinter.Tk()
         Win2.withdraw()
         tkMessageBox.showinfo(message="Value 2 has no values entered")

    ###Close GUI if Val1 and Val2 have values    
      if len(self.val2)>0 and len(self.val1)>0:
         self.destroy()


app = GUI(None)
app.title('Values')
app.mainloop()
#calculate values of Val1 and Val2 
a=float(app.val1)
b=float(app.val2)
c=a+b
print c
4

1 に答える 1