2017-02-18 8 views
-1

ラジオボタンを押してから送信ボタンを押したときにコードが何も印刷されないのはなぜですか?たとえば、 "Open Save"ラジオボタンを押すと、入力を空白のままにしてsubmitを押すと "test2"が印刷されますが、何をしても何も印刷されません。私のコードで何も印刷されないのはなぜですか?

def Saves(): 
    global saveordelete 
    saveordelete = 0 
    global savedname 
    def openthesave(): 
     saveordelete = 1 
    def deletethesave(): 
     saveordelete = 2 
    def opensave(): 
     if saveordelete == 1: 
      openname = savedname.get() + ".txt" 
      my_file = Path(openname) 
      if my_file.is_file(): 
       print("tes1") 
      else: 
       print("test2") 
     elif saveordelete == 2: 
      openname = savedname.get() + ".txt" 
      my_file = Path(openname) 
      if my_file.is_file(): 
       print("test3") 
      else: 
       print("test4") 
    root = Tk()  
    root.title("Saves") 
    root.iconbitmap("morseicon.ico") 
    root.resizable(0,0) 
    Label(root, text="Name:").grid(row=0, column=0, sticky=W) 
    savedname = Entry(root, width=20) 
    savedname.grid(row=0, column=1) 
    Button(root, text="Submit", width=10, command=opensave, bg="aqua").grid(row=3, column=8) 
    Label(root, text="Choose kind:").grid(row=1, column=0, sticky=W) 
    Radiobutton(root, text="Open save", height="1", command=openthesave, value=1).grid(row=2, column=0, sticky=W) 
    Radiobutton(root, text="Delete save", height="1", command=deletethesave, value=2).grid(row=3, column=0, sticky=W) 
    root.mainloop() 
+0

'opensave'関数内の' saveordelete'の値は、 'openthesave'と' deletethesave'内の値を変更しているときに元の変数を更新するのではなく、いつも '0'になります。関数内の変数(その関数内のスコープ付き) –

答えて

1
saveordelete

機能openthesave()deletethesave()内のローカル変数です。彼らはsaveordeleteの値をSaves()で定義された値に変更しません。両方の機能でglobalというマークを付けるか、クラスを使用することをおすすめします。

関連する問題