Как сделать так, чтобы радиокнопки присваивали моим переменным 0,1,2 или 3? - PullRequest
0 голосов
/ 17 октября 2011

Вот пример грубого теста с множественным выбором, который я сделал. Он работает в терминале, и я надеюсь создать графический интерфейс для него, используя Tkinter.

print "CATEGORY 1: ANXIOUS FEELINGS"
print
print "1. Anxiety, nervousness, worry or fear"
BAI_var1 = input ("Please enter 0 for not at all, 1 for somewhat, 2 for moderatly or 3 for a lot:")
print
print "2. Feeling that things around you are strange, unreal, or foggy"
BAI_var2 = input ("Please enter 0 for not at all, 1 for somewhat, 2 for moderatly or 3 for a lot:")
print
print "3. Feeling detached from all or part of your body"
BAI_var3 = input ("Please enter 0 for not at all, 1 for somewhat, 2 for moderatly or 3 for a lot:")

print "Depression Test"
print
print
print "1. Sadness: Have been feeling sad or down in the dumps?"
BDC_var1 = input ("Please enter 0 for not at all, 1 for somewhat, 2 for moderatly or 3 for a lot:")
print
print "2. Discouragement: Does the future look hopeless?"
BDC_var2 = input ("Please enter 0 for not at all, 1 for somewhat, 2 for moderatly or 3 for a lot:")
print
print "3. Low self-esteem: Do you feel worthless or think of yourself as a failure?"
BDC_var3 = input ("Please enter 0 for not at all, 1 for somewhat, 2 for moderatly or 3 for a lot:")

#Burns Anxiety Inventory
#CATEGORY 1: ANXIOUS FEELINGS
Cat1_var = BAI_var1 + BAI_var2 + BAI_var3

#Burns Anxiety Checklist
BAI_var = Cat1_var
#Burns Depression Checklist
BDC_var = BDC_var1 + BDC_var2 + BDC_var3

#Prints your BAI & your BDC
print "Your BAI =", BAI_var,"Your BDC =", BDC_var


name = raw_input ("Please type in your name:")
bai = str(input("Please enter your BAI:"))
bdc = str(input("Please enter your BDC:"))
year = str(input("please enter the year:"))
month = str(input("Please enter the month:"))
day = str(input("Please enter day:"))
time_hour = str(input("Please enter the current hour:"))
time_minute = str(input("Please enter the current minutes:"))
am_pm = raw_input ("Please enter pm or am:")

file = open('Burns inventory 1.3.txt', 'a')
file.write(name + '\n')
file.write(day)
file.write("/")
file.write(month)
file.write("/")
file.write(year)
file.write('\n')
file.write('\n')
file.write('Your BAI is:')
file.write(bai)
file.write('\n')
file.write('Your BDC is:')
file.write(bdc)
file.write('\n')
file.write(time_hour)
file.write(':')
file.write(time_minute)
file.write('\n')
file.write(' ')
file.write(am_pm)
file.write('\n')
file.close()

Я работаю в течение 2 дней, два учат себя, как использовать Tkinter. Мой друг и я сделали этот грубый пример того, как может выглядеть тест.

from Tkinter import *
import time

class App:
    def __init__(self, master):
        w = Label(master, text="1. Anxiety, nervousness, worry or fear")
        w.pack()

        v = IntVar()
        Radiobutton(master, text="0 for not at all", variable=v, value=1).pack(side=TOP, anchor="w")
        Radiobutton(master, text="1 for somewhat", variable=v, value=2).pack(side=TOP, anchor="w")
        Radiobutton(master, text="2 for moderatly", variable=v, value=3).pack(side=TOP, anchor="w")
        Radiobutton(master, text="3 for a lot", variable=v, value=4).pack(side=TOP, anchor="w")

        self.button = Button(master, text="BACK", fg="red", command=self.button6)
        self.button.pack(side=BOTTOM)
        self.button = Button(master, text="NEXT", fg="red", command=self.button5)
        self.button.pack(side=BOTTOM)


    def button6(self):
        print "Sam is awesome!GAJONGA" 

    def button5(self):
        print "PYTHON FOR THE WIN! GIAN SAYS PYTHON = FILTHY" 

master = Tk()
app = App(master)
master.mainloop()

Я могу придумать несколько целей с этим графическим интерфейсом Tkinter:

  • Заставить радиокнопки присваивать моим переменным 0,1,2 или 3 (BAI_var1, BAI_var2, BAI_3 и т. Д.)
  • Сделайте так, чтобы кнопки «NEXT» и «BACK» отображали разные вопросы при каждом нажатии.
  • Создать страницу в конце теста, содержащую несколько полей для ввода имени, даты и т. Д.

Я не сделал тест !! Я только сделал программное обеспечение. Тест был разработан Дэвидом Бернсом и доступен в его рабочей книге «Книга хорошего самочувствия».

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

измените все места, где у вас есть v на self.v, чтобы он стал атрибутом объекта. Затем вы увидите, что оно имеет любое значение, выбранное в группе радиокнопок.

...
self.v = IntVar()
...
Radiobutton(master, text="1 for somewhat", variable=self.v, value=2)...
...

Как только вы это сделаете, в вашем методе button5 или button6 вы можете сделать print self.v.get(), чтобы увидеть значение.

0 голосов
/ 17 октября 2011

Если вы не заинтересованы в изучении tkinter прямо сейчас, easygui подойдет для быстрого получения графического интерфейса для этого теста. Его нет в стандартной библиотеке, поэтому вам придется либо установить его с pip install, либо загрузить его и поместить файл easygui.py в ту же папку, что и ваш скрипт. Easygui позволяет вам делать такие вещи, как:

import easygui
animal = easygui.choicebox(
        msg='Pick an animal.',
        title='answer the question',
        choices=('dog', 'cat', 'pig')
        )
print animal
# prints dog or pig or cat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...