Python Forum
[Tkinter] Not getting entry values on button click & treeview not updating ?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tkinter] Not getting entry values on button click & treeview not updating ?
#1
So I am very new to programming, I have set a goal of creating a simple file for tracking material prices that I use often. I have been rummaging through tutorials and youtube videos to learn stuff. I have a long way to go, but I am caught up on a couple items that if I get figured out will set me on the right path.
  1. First problem.
    My code creates a gui with input boxes, a button, and a treeview.
    When I click the button, it runs my adding_records method, but it adds blank records.
    From what I can gather, when the button is clicked, it runs the adding_records() method before the entries are able to be set into variables, thus the variables being passed to the method are empty.
    From what I searched, the lambda: in the command is supposed to help that, but it is not helping.

  2. Problem 2.
    When a record is added via the button and method, it does not refresh in the treeview.
    I must close out the program and re-run it for it to show up.
    I have tried placing it in the mainloop per some searching, but no success.

from tkinter import ttk
import tkinter as tk
import sqlite3

class PriceList:

    def __init__(self, win):


    #----------------------Runs SQL Queries--------------------------------
        def run_query(query, parameters = ()):
                with sqlite3.connect('pricing.db') as conn:
                    cursor = conn.cursor()
                    query_result = cursor.execute(query, parameters)
                    conn.commit()
                return query_result

        #----------------------Method to populate Treeview-----------    
            
        def viewing_records():
                records = tree.get_children()
                for element in records:
                    self.tree.delete(element)
                query = 'SELECT * FROM parts'
                db_rows = run_query(query)
                for row in db_rows:
                    tree.insert('', 0, text = row[0], values = (row[0], row[1], row[2], row[3], row[4], row[5]))


        def adding_records(matID, descr, manuf, price, unit, condition):
        		query = "INSERT INTO parts VALUES (?, ?, ?, ?, ?, ?)"            
        		run_query(query, (matID, descr, manuf, price, unit, condition))
        		



        #---------------------Sets up Gui Window and Sets Size------------------
        
        win.minsize(width=800, height=600)
        win.resizable(width=0, height=0)
        win.title('Morfin Price List')

        framet = tk.Frame(width=800, height=300)
        framet.pack(side="top")

        frameb = tk.Frame(width=800, height=500)
        frameb.pack(side="bottom")

        #---------------------Sets up labels and entry boxes------------------
        label1 = tk.Label(framet, text='Material ID: ', width=15)
        label1.grid(row=1, column=1)
        e1 = tk.Entry(framet, width=20)
        e1.grid(row=1, column=2)

        label2 = tk.Label(framet, text='Description: ', width=15)
        label2.grid(row=2, column=1)
        e2 = tk.Entry(framet, width=30)
        e2.grid(row=2, column=2)

        label3 = tk.Label(framet, text='Manufacturer: ', width=15)
        label3.grid(row=3, column=1)
        e3 = tk.Entry(framet, width=20)
        e3.grid(row=3, column=2)

        label4 = tk.Label(framet, text='Price: ', width=15)
        label4.grid(row=4, column=1)
        e4 = tk.Entry(framet, width=20)
        e4.grid(row=4, column=2)

        label5 = tk.Label(framet, text='Unit: ', width=15)
        label5.grid(row=5, column=1)
        e5 = tk.Entry(framet, width=20)
        e5.grid(row=5, column=2)

        label6 = tk.Label(framet, text='Condition: ', width=15)
        label6.grid(row=6, column=1)
        e6 = tk.Entry(framet, width=20)
        e6.grid(row=6, column=2)

        #--------------------------sets entry data into variables to pass to method-----
        var1 = e1.get()
        var2 = e2.get()
        var3 = e3.get()
        var4 = e4.get()
        var5 = e5.get()
        var6 = e6.get()

        #----creates button with command to run adding_records() method on click---------

        b1 = tk.Button(framet, text='Add', command=lambda : adding_records(var1,var2,var3, var4, var5, var6))
        b1.grid(row=1, column=7)

        #----------------------Build Treeview-----------------------------------
        tree=ttk.Treeview(frameb, selectmode='browse')
        tree.grid(row=1, column=1)
        tree["columns"] = ("1", "2", "3", "4", "5", "6")
        tree["show"] = 'headings'
        tree.column("1", width=120, anchor='c')
        tree.column("2", width=190, anchor='c')
        tree.column("3", width=150, anchor='c')
        tree.column("4", width=100, anchor='c')
        tree.column("5", width=80, anchor='c')
        tree.column("6", width=150, anchor='c')
        tree.heading("1", text="Material ID")
        tree.heading("2", text="Description")
        tree.heading("3", text="Manufacturer")
        tree.heading("4", text="Price")
        tree.heading("5", text="Unit")
        tree.heading("6", text="Condition")

        #-----------------Calls method to populate Treeview-------------------

        viewing_records()



        




if __name__=='__main__':
    win = tk.Tk()
    application = PriceList(win)
    win.mainloop()
	
Reply


Messages In This Thread
Not getting entry values on button click & treeview not updating ? - by swanysto - May-08-2019, 07:35 PM
RE: Tkinter/sqlite method issues - by Yoriz - May-08-2019, 07:55 PM
RE: Tkinter/sqlite method issues - by swanysto - May-08-2019, 11:28 PM
RE: Tkinter/sqlite method issues - by Yoriz - May-09-2019, 08:33 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  tkinter - touchscreen, push the button like click the mouse John64 5 873 Jan-06-2024, 03:45 PM
Last Post: deanhystad
  [Tkinter] Search data in treeview without search button TomasSanchexx 3 1,626 Aug-12-2023, 03:17 AM
Last Post: deanhystad
  Figure Gets Larger Every time I click a show button joshuagreineder 2 1,335 Aug-11-2022, 06:25 AM
Last Post: chinky
  [Tkinter] [split] Is there a way to embed a treeview as a row inside another treeview? CyKlop 5 3,404 Oct-20-2021, 12:14 AM
Last Post: CyKlop
  [Tkinter] Modify Class on Button Click KDog 4 3,984 May-11-2021, 08:43 PM
Last Post: KDog
  Updating button text based upon different variable values knoxvilles_joker 0 2,244 Apr-18-2021, 04:13 AM
Last Post: knoxvilles_joker
  [Tkinter] Justify the treeview to the last entry MrP 7 7,041 Mar-01-2021, 11:20 AM
Last Post: MrP
  [Tkinter] Can I modify part of 'Values' value of Treeview item? water 0 2,727 Dec-29-2020, 09:35 PM
Last Post: water
  [Tkinter] Button click problem using OOP JohnB 5 3,646 Oct-21-2020, 12:43 PM
Last Post: JohnB
  tkinter | Button color text on Click Maryan 2 3,400 Oct-09-2020, 08:56 PM
Last Post: Maryan

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020