?
Solved

[python - GUI] how do I associate the checkbuttons and radio buttons to the database?

Posted on 2009-04-01
2
Medium Priority
?
562 Views
Last Modified: 2012-05-06
I made a database file and I made several entries into it. Now I wanna use GUI to enter data in the database (by associating the GUI file with the database file).

In the GUI file, I have some entries like "Name", "student number" etc. and some checkbutons, I want to write a code so that if I click the submit button, the entries I made (also the checkbuttons) get stored in the database,

I want to add another button "clear", which should clear the content of the data entry fields in the GUI window, (also unselects the checkbuttons I might have)
here is my code for the GUI file: 
 
from Tkinter import *
 
def run_analyse(db):
    window = Tk()
    window.title('Database')
    
    frame = Frame(window)
    frame.pack()
    
    q1_prompt = Label(frame, text="Name:")
    q1_prompt.grid(row=0, column=0)
    q1_data = Entry(frame)
    q1_data.grid(row=0, column=1)
     
    q2_prompt = Label(frame, text="Student number:")
    q2_prompt.grid(row=2, column=0)
    q2_data = Entry(frame)
    q2_data.grid(row=2, column=1)
    
    q3_prompt = Label(frame, text="Field of study:")
    q3_prompt.grid(row=4, column=0)
    q3_data = Entry(frame)
    q3_data.grid(row=4, column=1)   
    
    q3_prompt2 = Label(frame, text="Course load")
    q3_prompt2.grid(row=5, column=0)
    
    #first check button
    x1=StringVar()
    one_course = Checkbutton(frame, text="1", variable = x1, onvalue ="1", offvalue ="")
    one_course.grid(row=6, column=1)
    
    x2=StringVar()
    two_course = Checkbutton(frame, text="2", variable = x2, onvalue ="2", offvalue ="")
    two_course.grid(row=7, column=1)
    
    x3=StringVar()
    three_course = Checkbutton(frame, text="3", variable = x3, onvalue ="3", offvalue ="")
    three_course.grid(row=8, column=1)
    
    
    x4=StringVar()
    four_course = Checkbutton(frame, text="4", variable = x4, onvalue ="4", offvalue ="")
    four_course.grid(row=9, column=1)
    
    x5=StringVar()
    five_course = Checkbutton(frame, text="5", variable = x5, onvalue ="5", offvalue ="")
    five_course.grid(row=10, column=1)
    
    window.mainloop()
    
if __name__=="__main__":
    run_analyse('testing.txt')

Open in new window

0
Comment
Question by:Student_101
1 Comment
 
LVL 39

Accepted Solution

by:
Roger Baklund earned 2000 total points
ID: 24045206
You did not explain the layout of your database.txt file, the below example assumes it is comma separated. I put all the data in a global variable named "data". The name of the database is also in a global variable "db", so that it is accessible from the do_create() function.  If you define a class for your gui this can be done without using global variables.
from Tkinter import *
 
data = {}
db = 'testing.txt'
 
def run_analyse():
    global data
    window = Tk()
    window.title('Database')
    
    frame = Frame(window)
    frame.pack()
    
    q1_prompt = Label(frame, text="Name:")
    q1_prompt.grid(row=0, column=0)
    data['name'] = Entry(frame)
    data['name'].grid(row=0, column=1)
     
    q2_prompt = Label(frame, text="Student number:")
    q2_prompt.grid(row=2, column=0)
    data['nbr'] = Entry(frame)
    data['nbr'].grid(row=2, column=1)
    
    q3_prompt = Label(frame, text="Field of study:")
    q3_prompt.grid(row=4, column=0)
    data['field'] = Entry(frame)
    data['field'].grid(row=4, column=1)   
    
    q3_prompt2 = Label(frame, text="Course load")
    q3_prompt2.grid(row=5, column=0)
    
    #first check button
    data['x1']=StringVar()
    one_course = Checkbutton(frame, text="1", variable = data['x1'], onvalue ="1", offvalue ="")
    one_course.grid(row=6, column=1)
    
    data['x2']=StringVar()
    two_course = Checkbutton(frame, text="2", variable = data['x2'], onvalue ="2", offvalue ="")
    two_course.grid(row=7, column=1)
    
    data['x3']=StringVar()
    three_course = Checkbutton(frame, text="3", variable = data['x3'], onvalue ="3", offvalue ="")
    three_course.grid(row=8, column=1)
    
    
    data['x4']=StringVar()
    four_course = Checkbutton(frame, text="4", variable = data['x4'], onvalue ="4", offvalue ="")
    four_course.grid(row=9, column=1)
    
    data['x5']=StringVar()
    five_course = Checkbutton(frame, text="5", variable = data['x5'], onvalue ="5", offvalue ="")
    five_course.grid(row=10, column=1)
    
    submitbtn = Button(frame, text="Create", command=do_create)
    submitbtn.grid(row=11, column=0)
    
    clearbtn = Button(frame, text="Clear", command=do_clear)
    clearbtn.grid(row=11, column=1)
    
    window.mainloop()
 
def do_clear():
    global data
    data['name'].delete(0,END)
    data['nbr'].delete(0,END)
    data['field'].delete(0,END)
    data['x1'].set('')
    data['x2'].set('')
    data['x3'].set('')
    data['x4'].set('')
    data['x5'].set('')
 
def do_create():
    global db,data
    print 'Writing to file',db,'...'
    f=open(db,'a')
    f.write(data['name'].get()+','+
            data['nbr'].get()+','+
            data['field'].get()+','+
            data['x1'].get()+','+
            data['x2'].get()+','+
            data['x3'].get()+','+
            data['x4'].get()+','+
            data['x5'].get()+'\n')
    f.close()
    print 'Record was written!'
  
if __name__=="__main__":
    run_analyse()

Open in new window

0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Installing Python 2.7.3 version on Windows operating system For installing Python first we need to download Python's latest version from URL" www.python.org " You can also get information on Python scripting language from the above mentioned we…
Variable is a place holder or reserved memory locations to store any value. Which means whenever we create a variable, indirectly we are reserving some space in the memory. The interpreter assigns or allocates some space in the memory based on the d…
Learn the basics of strings in Python: declaration, operations, indices, and slicing. Strings are declared with quotations; for example: s = "string": Strings are immutable.: Strings may be concatenated or multiplied using the addition and multiplic…
Learn the basics of lists in Python. Lists, as their name suggests, are a means for ordering and storing values. : Lists are declared using brackets; for example: t = [1, 2, 3]: Lists may contain a mix of data types; for example: t = ['string', 1, T…
Suggested Courses

807 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question