我正在使用focus方法在Tkinter for Python中设置一个焦点条目,但是脚本工作不正常如下:
#-*- coding: utf-8 -*-
from tkinter import *
from tkinter import ttk
import sqlite3
def agregar():
def erase():
eNom.set(fieldvalues[0])
eQty.set("")
eUnit.set("")
ePrice.set("")
total = 0
txtTotal = ttk.Label(frame, text=total, width=20).grid(column=4, row=1, sticky=E)
txtQty.focus()
getQty = eQty.get()
quantity = float(getQty)
getNom = eNom.get()
cur.execute("SELECT field_nom, field_unit, field_price FROM Products WHERE field_nom = ?;", (getNom, ))
for nom, unit, price in cur:
unit = unit
price = price
total = quantity * price
total = str(total)
eUnit = StringVar()
txtUnit = ttk.Entry(frame, textvariable=eUnit, width=15).grid(column=2, row=1)
eUnit.set(unit)
ePrice = StringVar()
txtPrice = ttk.Entry(frame, textvariable=ePrice, width=20).grid(column=3, row=1)
ePrice.set(price)
txtTotal = ttk.Label(frame, text=total, width=20).grid(column=4, row=1, sticky=E)
ttk.Button(frame, text="OK", command=erase).grid(column=2, row=2)
main = Tk()
main.title("Y que aparece")
main.geometry("+50+100")
frame = ttk.Frame(main, padding=(3, 3, 12, 12), relief="raised")
frame.grid(column=0, row=0, sticky=(N, S, E, W))
conn = sqlite3.connect("prueba.sqlite3")
cur = conn.cursor()
ttk.Label(frame, text="Qty").grid(column=0, row=0)
ttk.Label(frame, text="Product").grid(column=1, row=0)
ttk.Label(frame, text="Unit").grid(column=2, row=0)
ttk.Label(frame, text="Price").grid(column=3, row=0)
ttk.Label(frame, text="Total").grid(column=4, row=0)
eQty = StringVar()
txtQty = ttk.Entry(frame, textvariable=eQty, width=10).grid(column=0, row=1)
eNom = StringVar()
fieldvalues = list()
cur.execute("SELECT field_id, field_nom FROM Products")
for fid, fnom in cur:
fieldvalues.append(fnom)
ttk.Combobox(frame, values=fieldvalues, textvariable=eNom, width=30).grid(column=1, row=1, sticky=W)
eNom.set(fieldvalues[0])
ttk.Button(frame, text="Agregar", command=agregar).grid(column=3, row=2)
ttk.Button(frame, text="Salir", command=main.destroy).grid(column=1, row=2)
main.mainloop()
我正在尝试将焦点指向txtQty Entry小部件,但是我收到以下错误消息:
AttributeError:'无类型'对象没有属性'焦点'
提前致谢!
答案 0 :(得分:0)
txtQty = ttk.Entry(frame, textvariable=eQty, width=10).grid(column=0, row=1)
txtQty
为无,因为它是grid
的返回值。
在不同的行上执行赋值和网格化。
txtQty = ttk.Entry(frame, textvariable=eQty, width=10)
txtQty.grid(column=0, row=1)