我是 Python 和 tkinter 的新手...
当按下“btn_add”时,我一直试图将焦点设置回“itemnum”。但是它不起作用......之后焦点将停留在“lotnum”条目小部件上。
我尝试使用绑定到事件''来创建一个新函数 def FocusSet
但仍然无法正常工作。我想我在这一点上有传递参数的问题..
有人可以指出我正确的方向吗?非常感谢。谢谢!
以下是脚本:
from tkinter import *
import tkinter.messagebox as tkMessageBox
import tkinter.ttk as ttk
ShowAddNew = Tk()
ITEM_NUM = StringVar()
LOT_NUM = StringVar()
UM = StringVar()
def ShowAddNew():
global addnewform
addnewform = Toplevel()
addnewform.title("Mock Count/Add new")
width = 230
height = 260
addnewform.geometry("%dx%d+%d+%d" % (width, height, 0, 0))
addnewform.resizable(0, 0)
AddNewForm()
def AddNewForm():
TopAddNew = Frame(addnewform, width=220, height=10, bd=1, relief=SOLID)
TopAddNew.pack(side=TOP, pady=5)
lbl_text = Label(TopAddNew, text=("Adding Count Result"), font=('arial', 9), width=220)
lbl_text.pack(fill=X)
MidAddNew = Frame(addnewform, width=220)
MidAddNew.pack(side=TOP, pady=5)
lbl_itemnum = Label(MidAddNew, text="Item Number:", font=('arial', 12), bd=6)
lbl_itemnum.grid(row=0, sticky=W)
lbl_lotnum = Label(MidAddNew, text="Lot:", font=('arial', 12), bd=6)
lbl_lotnum.grid(row=1, sticky=W)
lbl_UoM = Label(MidAddNew, text="U of M:", font=('arial', 12), bd=6)
lbl_UoM.grid(row=3, sticky=W)
itemnum = Entry(MidAddNew, textvariable=ITEM_NUM, font=('arial', 10), width=20)
itemnum.grid(row=0, column=1)
lotnum = Entry(MidAddNew, textvariable=LOT_NUM, font=('arial', 10), width=20)
lotnum.grid(row=1, column=1)
UoM = OptionMenu(MidAddNew,UM,"lb","kg","case","pk","unit")
UoM.grid(row=3, column=1)
btn_add = Button(MidAddNew, text="Save", font=('arial', 12), width=15, bg="#009ACD", command=AddNew)
btn_add.grid(row=4, columnspan=2, pady=5)
btn_add.bind('<Button-1>', lambda: FocusSet(itemnum))
ITEM_NUM.trace('w', my_tracer)
itemnum.focus_set()
#UM.set("(Please Select)")
TopAddNew.mainloop()
def my_tracer(a,b,c):
UM.set("loading...")
def FocusSet(event):
itemnum.focus_set()
def AddNew():
ITEM_NUM.set("")
LOT_NUM.set("")
UM.set("loading...")
ShowAddNew()
if __name__ == '__main__':
root.mainloop()
杨柳
我想通了,谢谢大家:) 肯定没有正确传递参数(仍在学习)干杯!
from tkinter import *
import tkinter.messagebox as tkMessageBox
import tkinter.ttk as ttk
ShowAddNew = Tk()
ITEM_NUM = StringVar()
LOT_NUM = StringVar()
UM = StringVar()
def ShowAddNew():
global addnewform
addnewform = Toplevel()
addnewform.title("Mock Count/Add new")
width = 230
height = 260
addnewform.geometry("%dx%d+%d+%d" % (width, height, 0, 0))
addnewform.resizable(0, 0)
AddNewForm()
def AddNewForm():
TopAddNew = Frame(addnewform, width=220, height=10, bd=1, relief=SOLID)
TopAddNew.pack(side=TOP, pady=5)
lbl_text = Label(TopAddNew, text=("Adding Count Result"), font=('arial', 9), width=220)
lbl_text.pack(fill=X)
MidAddNew = Frame(addnewform, width=220)
MidAddNew.pack(side=TOP, pady=5)
lbl_itemnum = Label(MidAddNew, text="Item Number:", font=('arial', 12), bd=6)
lbl_itemnum.grid(row=0, sticky=W)
lbl_lotnum = Label(MidAddNew, text="Lot:", font=('arial', 12), bd=6)
lbl_lotnum.grid(row=1, sticky=W)
lbl_UoM = Label(MidAddNew, text="U of M:", font=('arial', 12), bd=6)
lbl_UoM.grid(row=3, sticky=W)
itemnum = Entry(MidAddNew, textvariable=ITEM_NUM, font=('arial', 10), width=20)
itemnum.grid(row=0, column=1)
lotnum = Entry(MidAddNew, textvariable=LOT_NUM, font=('arial', 10), width=20)
lotnum.grid(row=1, column=1)
UoM = OptionMenu(MidAddNew,UM,"lb","kg","case","pk","unit")
UoM.grid(row=3, column=1)
btn_add = Button(MidAddNew, text="Save", font=('arial', 12), width=15, bg="#009ACD", command=AddNew)
btn_add.grid(row=4, columnspan=2, pady=5)
**btn_add.bind('<Button-1>', lambda Event: FocusSet(itemnum))**
ITEM_NUM.trace('w', my_tracer)
itemnum.focus_set()
TopAddNew.mainloop()
def my_tracer(a,b,c):
UM.set("loading...")
**def FocusSet(itemnum):
itemnum.focus_set()**
def AddNew():
ITEM_NUM.set("")
LOT_NUM.set("")
UM.set("loading...")
ShowAddNew()
if __name__ == '__main__':
root.mainloop()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句