我正试图用一个比较两个字符串的简单GUI运行一个简单的脚本。正如您所看到的,我添加了两个输入字段和一个运行检查功能的检查按钮。一开始.focus((在第一个入口小部件上,然后我需要输入一个值,选择第二个入口小程序输入一个数值,然后按下脚本的check来比较两个给定的值。
import tkinter as tk
from tkinter import ttk
win = tk.Tk()
win.title("Vitek magacin")
win.geometry("200x150")
win.configure(background='gold')
def check():
c1=no1.get()
c2=no2.get()
if c1 == c2:
print("You win a silly price")
else:
print("You win nothing old men")
no1=tk.StringVar()
no2=tk.StringVar()
inputa = ttk.Entry(win, width=12, textvariable=no1)
inputa.grid(column=0, row=1)
inputa.focus()
inputb = ttk.Entry(win, width=12, textvariable=no2)
inputb.grid(column=0, row=2)
ButtonCheck = ttk.Button(win, text='Check',
command=check)
ButtonCheck.grid(column=0, row=3)
win.mainloop()
因此,我试图做到的是:当我填写条目一时,它会将焦点切换到条目二,当填写条目二时,我希望它运行检查功能,删除条目字段,然后重新开始,因为这些输入来自条形码阅读器,我希望其尽可能自动化。有人能帮忙吗?
我会用bind方法来解决这个问题。这有点错误,也有一些缺点,但如果你不按任何其他键,它就会起作用。例如,如果你按"fn"12次,就会出现问题,但我认为你可以解决它。其思想是,程序计算击键次数,并将其与输入字段的宽度进行比较,如果输入字段被完全填充,则程序将重点放在第二个输入字段上,如果第二个字段也被完全填满,则程序执行该功能。
from tkinter import *
root = Tk()
root.title("Vitek magacin")
root.geometry("200x150")
root.configure(background='gold')
s = 0
def check():
c1=inputa.get()
c2=inputb.get()
if c1 == c2:
print("You win a silly price")
else:
print("You win nothing old men")
def checker(event):
global s
s += 1
if s==inputa['width']:
inputb.focus()
if s==inputa['width']+inputb['width']:
check()
inputa = Entry(root, width=12)
inputa.grid(column=0, row=1)
inputa.focus()
inputb = Entry(root, width=12)
inputb.grid(column=0, row=2)
ButtonCheck = Button(root, text='Check', command=check)
ButtonCheck.grid(column=0, row=3)
root.bind('<Key>', checker)
root.mainloop()