It looks like the LabelInput constructor includes some code.  Did you mean 
something like:

       self.inputs['Contact Type'] = LabelInput(
           ContactDataForm, 'contact_type',)
       # query to fetch data from contacttypes table
       fetch_all = "SELECT * from contacttypes"
       cur.execute(fetch_all)
       # fetching all rows
       rows = cur.fetchall()
       input_class=ttk.Combobox([values = rows])
       input_var=tk.StringVar()
       # get selected value and bind it to a method
       cont_type = self.get() # selected value by mouse click
       con.close()
           

> On Apr 4, 2022, at 15:02, Rich Shepard <rshep...@appl-ecosys.com> wrote:
> 
> This MWE (test_combobox.py) produces a syntax error and I'm not seeing why:
> -----
> import tkinter as tk
> from tkinter import ttk
> 
> import psycopg2
> 
> class ContactDataForm(tk.Frame):
>    # set up postgres
>    # the connection
>    con = psycopg2.connect(database='bustrac')
>    # the cursor
>    cur = con.cursor()
> 
>    def __init__(self, parent, *args, **kwargs):
>        super().__init__(parent, *args, **kwargs)
>        # A dict to keep track of input widgets
>        self.inputs = {}
> 
>        self.inputs['Contact Type'] = LabelInput(
>            ContactDataForm, 'contact_type',
>            # query to fetch data from contacttypes table
>            fetch_all = "SELECT * from contacttypes"
>            cur.execute(fetch_all)
>            # fetching all rows
>            rows = cur.fetchall()
>            input_class=ttk.Combobox([values = rows])
>            input_var=tk.StringVar()
>            # get selected value and bind it to a method
>            cont_type = self.get() # selected value by mouse click
>            con.close()
>            )
>        self.inputs['Contact Type'].grid(row0, column1)
>        ContactDataForm.grid(row=0, column=0, sticky='we')
> -----
> 
> When run from the shell:
> $ python test_combobox.py
>  File "test_combobox.py", line 24
>    cur.execute(fetch_all)
>      ^
> SyntaxError: invalid syntax
> 
> Here python is python3 by default.
> 
> What am I not seeing?
> 
> Rich
> 
> 

Reply via email to