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 > >