Twhite1195
Twhite1195

Reputation: 351

storing data from input box in tkinter

I got the assignment to build a program of a store.Now, the customers have to register to be able to buy, I made a main window that has buttons for each action I need to perform. When the user tries to register another window with the data needed to complete the registration appears. Now how do I store the data from the input-box into a list with a button?

Here's an example of how I'm setting each box that the user needs to fill:

var1 = StringVar()
var1.set("ID:")
label1 = Label(registerwindow,textvariable=var1,height = 2)
label1.grid(row=0,column=1)

ID=tkinter.StringVar()
box1=Entry(registerwindow,bd=4,textvariable=ID)
box.grid(row=0,column=2)

botonA= Button(registerwindow, text = "accept",command=get_data, width=5)
botonA.grid(row=6,column=2)

I tried setting the button to run a function that gets the input, but I't now working. Here's what I did

def get_data():
    print (box1.get())

Upvotes: 0

Views: 6109

Answers (2)

TigerhawkT3
TigerhawkT3

Reputation: 49330

A few problems:

  1. Unless you do import tkinter AND from tkinter import * - which you shouldn't; just choose one - your program will choke on either var1 = StringVar() or on ID=tkinter.StringVar().
  2. Define the get_data() function before binding it to a Button.
  3. You assigned box1 but then gridded box.

The following sample will get the box's contents, add it to a list, and print the list to the console every time you click "Accept." Replace the names of parent windows, grid locations of each widget, and so on to suit your program.

from tkinter import *

root = Tk()

root.wm_title("Your program")

mylist = []

def get_data(l):
    l.append(box1.get())
    print(l)

var1 = StringVar()
var1.set("ID:")
label1 = Label(root,textvariable=var1,height = 2)
label1.grid(row=0,column=0)

ID=StringVar()
box1=Entry(root,bd=4,textvariable=ID)
box1.grid(row=0,column=1)

botonA= Button(root, text = "accept",command=lambda: get_data(mylist), width=5)
botonA.grid(row=0,column=2)

root.mainloop()

Upvotes: 3

Alan Hoover
Alan Hoover

Reputation: 1450

to retrieve the value, you need to access the variable it is attached to, not the entry field on the screen:

def get_data():
    print (ID.get())

Upvotes: -1

Related Questions