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