执行按钮时如何将焦点设置回原始条目小部件?(Python)

杨柳

我是 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将图像设置为小部件上的按钮?

如何将焦点设置到ttk.Entry小部件?

如何将Python设置回原始版本

如何将按钮的属性设置为从Qt中的小部件可见

小部件失去焦点时如何截取

将小部件添加到小部件树时如何为更改设置动画

将小部件放在主屏幕上时如何分配小部件的设置

如何将焦点设置在颤动中的材质按钮上

如何验证python中的条目小部件?

单击按钮时删除重点条目小部件

从条目小部件中删除焦点

如何将文件位置存储到条目小部件中-Tkinter

文件上传完成后如何将uploadcare小部件重置为原始状态

Python tk。使用Tab键设置小部件焦点

如何通过单击小部件按钮将所有小部件值设置为默认值?

按下“Enter”按钮时如何将焦点设置在下一个输入上?(javascript)

当此文本小部件失去焦点时,如何验证文本小部件的内容?

单击按钮后如何将小部件动态添加到布局

如何将多个按钮链接到 tkinter 中的一个文本小部件?

如何将Windows主题按钮和小部件放置在基维布局上

如何将 <"Return"> 键和按钮小部件绑定到 Tkinter 上的相同功能?

如何将Qt组合框与按钮和某种显示图片的小部件连接?

按退格键时如何删除条目小部件

如何将响应数据设置到TodayExtenstion小部件中

如何将Tkinter Scale小部件的状态设置为Disabled?

Flutter-如何将focusNode从Parent设置为Child小部件?

如何将QVideoWidget设置为全屏并在全屏小部件中具有音量滑块?

如何将GtkEntry小部件设置为仅使用C接受数字?

如何将Flutter Chip小部件的顶部和底部边距设置为零?