Es porque efectivamente self.tbx_usuario es None y me acabo de dar cuenta que tienes pegado el metodo grid, no me sorprende porque no te jala.
Código Python:
Ver originalfrom tkinter import *
import pypyodbc
root=Tk()
root.resizable(0,0)
root.geometry('600x300+500+300')
class Principal():
def valida_acceso(self):
connection_string ='Driver={SQL Server Native Client 11.0};Server=150.150.1.2;Database=Sh;Uid=sp;Pwd=sp;'
connection = pypyodbc.connect(connection_string)
SQL = "SELECT * FROM Usuarios WHERE Usuario=?"
cur = connection.cursor()
a = self.tbx_usuario.get()
cur.execute(SQL,a)
row= cur.fetchone()
if row:
print (row[0], row[1])
connection.commit()
cur.close()
connection.close()
def pantalla_login(self):
lab_usuario = Label(root, text="Usuario: ", font=("Helvetica", 14,
'bold'),bg='red').grid(row=3, column=1, sticky=W)
self.tbx_usuario = Entry(root, text="Usuario", textvariable=StringVar(), font=
("Helvetica", 14),fg='blue')
self.tbx_usuario.grid(row=3, column=2, sticky=W)
Button(root, text="Accesar".format(1),font=("Helvetica", 14,'bold'),
command=self.valida_acceso).grid(row=6,column=2,sticky=E)
root.mainloop()
principal = Principal()
principal.pantalla_login()
Encuentra la diferencia.