Обсуждение: cur.execute() syntax error
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
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
On Mon, 4 Apr 2022, Christophe Pettus wrote: > 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() Christophe, Sure looks like it. Thanks, Rich