Search code examples
pythontkintersubmitsurvey

Python Tkinter Submit button


I create some kind of surver whitch colect data about work and save answers under Submit button.I stuck on Submit button. How I can get all data save under this one button.

Many thanks for any help.

This is only part of the code with 2 questions:

import tkinter as tk
from tkinter import *
from tkinter import ttk
from tkinter.ttk import *
import win32com.client 

root = tk.Tk()
v = tk.IntVar()

tk.Label(root, text="Full Name").grid(row=0, column = 0)
tk.Entry(root).grid(row=0, column = 1)

tk.Label(root, text="Employy Number").grid(row=1, column = 0)
tk.Entry(root).grid(row=1, column = 1)

tk.Label(root,text="IF you requide for extra training please tick the box.", justify = tk.LEFT, padx = 20).grid(row=6, column = 0)
var1 = IntVar()
Checkbutton(root, text="APR", variable=var1).grid(row=7, column = 0)
var2 = IntVar()
Checkbutton(root, text="THS", variable=var2).grid(row=8, column = 0)
var3 = IntVar()
Checkbutton(root, text="GOOD IN", variable=var3).grid(row=9, column = 0)
var4 = IntVar()
Checkbutton(root, text="DESPATCH", variable=var4).grid(row=10, column = 0)
var5 = IntVar()
Checkbutton(root, text="LLOP", variable=var5).grid(row=11, column = 0)
var6 = IntVar()
Checkbutton(root, text="REACH TRUCK", variable=var6).grid(row=12, column = 0)
var7 = IntVar()
Checkbutton(root, text="CBT", variable=var7).grid(row=13, column = 0)

tk.Label(root, text="If you have any additional comments about your current position, manager ar any thing else please share with us.").grid(row=14, column= 0)
e3 = tk.Entry(root)
e3.grid(row=15, column=0)

#Submit button
def callback():
    print ("I dont know what how collect all data under this button")
MyButton1 = Button(root, text="Submit", width=10, command=callback)
MyButton1.grid(row=16, column=0)

root.mainloop() 

Solution

  • Here is a way to get what is written in Entries and which Checkbuttons are checked, and to print those informations (is that what you mean by "saving info in a button" ?)

    For Entry, you need to give a name to each Entry like this e1 = tk.Entry(root), and then grid them in a second line e1.grid(row=0, column = 1).

    For Checkbutton, you can check the value of the variable associated: var1 == 1 means Checkbutton1 was clicked, and var1 == 0 means not clicked.

    Try this (see my print statements in callback) :

    import tkinter as tk
    from tkinter import *
    from tkinter import ttk
    from tkinter.ttk import *
    # import win32com.client 
    
    root = tk.Tk()
    v = tk.IntVar()
    
    tk.Label(root, text="Full Name").grid(row=0, column = 0)
    e1 = tk.Entry(root)
    e1.grid(row=0, column = 1)
    
    tk.Label(root, text="Employy Number").grid(row=1, column = 0)
    e2 = tk.Entry(root)
    e2.grid(row=1, column = 1)
    
    tk.Label(root,text="IF you requide for extra training please tick the box.", justify = tk.LEFT, padx = 20).grid(row=6, column = 0)
    var1 = IntVar()
    Checkbutton(root, text="APR", variable=var1).grid(row=7, column = 0)
    var2 = IntVar()
    Checkbutton(root, text="THS", variable=var2).grid(row=8, column = 0)
    var3 = IntVar()
    Checkbutton(root, text="GOOD IN", variable=var3).grid(row=9, column = 0)
    var4 = IntVar()
    Checkbutton(root, text="DESPATCH", variable=var4).grid(row=10, column = 0)
    var5 = IntVar()
    Checkbutton(root, text="LLOP", variable=var5).grid(row=11, column = 0)
    var6 = IntVar()
    Checkbutton(root, text="REACH TRUCK", variable=var6).grid(row=12, column = 0)
    var7 = IntVar()
    Checkbutton(root, text="CBT", variable=var7).grid(row=13, column = 0)
    
    tk.Label(root, text="If you have any additional comments about your current position, manager ar any thing else please share with us.").grid(row=14, column= 0)
    e3 = tk.Entry(root)
    e3.grid(row=15, column=0)
    
    #Submit button
    def callback():
        print("e1.get()", e1.get())
        print("var1.get()", var1.get())
        print("var2.get()", var2.get())
        print("var3.get()", var3.get())
        print ("I dont know what how collect all data under this button")
    MyButton1 = Button(root, text="Submit", width=10, command=callback)
    MyButton1.grid(row=16, column=0)
    
    root.mainloop()