2016-05-19 6 views
0

Ich laufe gerade Python 3.3.2 mit tkinter und ich bekomme immer das gleiche Problem. Wenn ich ein neues Fenster mit Optionsfeldern erstelle, sind 2 von 3 Optionsfeldern aktiviert, aber ich bin mir nicht sicher warum; Ich habe versucht, mit meinem Code herumzuspielen, aber es scheint nicht zu funktionieren. Ich wäre sehr dankbar, wenn irgendjemand sehen könnte warum. Hier ist mein Code:tkinter - 2 von 3 Radiobuttons sind markiert

def shape_Menu(): 
    def triangle_choice(): 
     def updatetext(event): 
      answer.delete(0, END) 
      window1.update_idletasks() 

     def check_Answer(event): 
      if answer.get() == area: 
       canvas.create_text(150, 95, text='Width='+str(random_number2)+'cm', font=('arial', 45, bold), fill=green) 

     def correct(): 
      print('correct!!!') 

     def incorrect(): 
      print('Incorrect!!!') 

     window1 = tk.Tk() 
     window1.geometry('875x450+375+325') 
     window1.title('Triangle') 
     canvas = Canvas(window1, width=200, height=150) 
     canvas.pack(side=tk.LEFT, padx=40, pady=35) 
     canvas.create_polygon((0, 100, 50, 0, 100, 100), fill="blue") 


     random_number1 = random.randint(1,12) 
     canvas.create_text(150, 75, text='Length='+str(random_number1)+'cm', font=('arial', 10)) 

     random_number2 = random.randint(1,12) 
     canvas.create_text(150, 95, text='Width='+str(random_number2)+'cm', font=('arial', 10)) 

     canvas.create_text(80, 115, text='Area = (Length * Width)/2', font=('arial', 10)) 

     area = (random_number1 * random_number2)/2 

     random_num = random.randint(0,3) 

     random1 = random.uniform(1,100) 
     random1 = round(random1, 2) 

     random2 = float(random.randint(1,100)) 

     v = IntVar() 

     if random_num == 1: 
      c1 = Radiobutton(window1, text=area, variable=v, value=1, command=correct).pack(side=RIGHT, padx=50, pady=25) 
      c2 = Radiobutton(window1, text=(random1), variable=v, value=2, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 
      c3 = Radiobutton(window1, text=(random2), variable=v, value=3, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 

     elif random_num == 2: 
      c1 = Radiobutton(window1, text=(random1), variable=v, value=1, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 
      c2 = Radiobutton(window1, text=area, variable=v, value=2, command=correct).pack(side=RIGHT, padx=50, pady=25) 
      c3 = Radiobutton(window1, text=(random2), variable=v, value=3, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 

     else: 
      c1 = Radiobutton(window1, text=(random1), variable=v, value=1, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 
      c2 = Radiobutton(window1, text=(random2), variable=v, value=2, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 
      c3 = Radiobutton(window1, text=area, variable=v, value=3, command=correct).pack(side=RIGHT, padx=50, pady=25) 

    def circle_choice(): 
     root = tk.Tk() 
     root.geometry('300x160') 
     root.eval('tk::PlaceWindow %s center' % root.winfo_pathname(root.winfo_id())) 
     root.title('Circle') 
+0

Dies könnte http://stackoverflow.com/questions/22686587/tkinter-radiobutton-not-working?rq=1 helfen –

+0

Es ist ein anderes Problem, trotzdem danke. –

+1

FWIW, Sie sollten nicht zwei 'tk.Tk()' Hauptfenster in einem Programm _not_ haben. Außerdem kann ich in Ihrem Code keinen '.mainloop()' Aufruf sehen. Bitte denk daran, einen [mcve] zu veröffentlichen, der sich auf dein Problem konzentriert. –

Antwort

0

Ich habe Ihren Code wie folgt ausgeführt und sehe kein Problem mit den Optionsfeldern. nicht sicher, was du meinst von

from tkinter import * 

import random 

window1 = Tk() 
window1.geometry('875x450+375+325') 
window1.title('Triangle') 
canvas = Canvas(window1, width=200, height=150) 
canvas.pack(side=LEFT, padx=40, pady=35) 
canvas.create_polygon((0, 100, 50, 0, 100, 100), fill="blue") 


random_number1 = random.randint(1,12) 
canvas.create_text(150, 75, text='Length='+str(random_number1)+'cm', font=('arial', 10)) 

random_number2 = random.randint(1,12) 
canvas.create_text(150, 95, text='Width='+str(random_number2)+'cm', font=('arial', 10)) 

canvas.create_text(80, 115, text='Area = (Length * Width)/2', font=('arial', 10)) 

area = (random_number1 * random_number2)/2 

random_num = random.randint(0,3) 

random1 = random.uniform(1,100) 
random1 = round(random1, 2) 

random2 = float(random.randint(1,100)) 

v = IntVar() 

def correct(): 
    print('correct!!!') 

def incorrect(): 
    print('Incorrect!!!') 

if random_num == 1: 
    c1 = Radiobutton(window1, text=area, variable=v, value=1, command=correct).pack(side=RIGHT, padx=50, pady=25) 
    c2 = Radiobutton(window1, text=(random1), variable=v, value=2, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 
    c3 = Radiobutton(window1, text=(random2), variable=v, value=3, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 

elif random_num == 2: 
    c1 = Radiobutton(window1, text=(random1), variable=v, value=1, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 
    c2 = Radiobutton(window1, text=area, variable=v, value=2, command=correct).pack(side=RIGHT, padx=50, pady=25) 
    c3 = Radiobutton(window1, text=(random2), variable=v, value=3, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 

else: 
    c1 = Radiobutton(window1, text=(random1), variable=v, value=1, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 
    c2 = Radiobutton(window1, text=(random2), variable=v, value=2, command=incorrect).pack(side=RIGHT, padx=50, pady=25) 
    c3 = Radiobutton(window1, text=area, variable=v, value=3, command=correct).pack(side=RIGHT, padx=50, pady=25) 

window1.mainloop() 

bitte erarbeiten weiter und/oder stellen eine Arbeitsprobe Code „Wenn ich ein neues Fenster mit Radio-Buttons erstellen“ so können wir weiter beheben hel.

Dank

Verwandte Themen