Python 2.7 Tkinter,更新标签并在之后使用
在下面的代码中,我可以使用USB条形码扫描仪扫描UPC代码,并获取12位数字字符串,然后使用名为bss的BASH脚本对其进行搜索,该脚本使用、Lynx进入互联网,找到该产品,并将所有不需要的文本剥离到描述中 问题在于,标签的更新次数似乎有限制。在名为def get_keyself的函数中,event I可以获取要更新两次的标签。在状态框中显示UPC代码,并将标签重置回就绪状态。。。。对该标签的任何更新只会显示最后定义的更新。这两者之间没有任何区别 为什么??在第二个函数def get_infoself中,我只能让它更新一次。这就是产品信息,直到我再次扫描,然后更新到扫描的新项目,这很好,但不是期望的结果,这是将标签更改回等待。。。。如有任何信息或指导,将不胜感激Python 2.7 Tkinter,更新标签并在之后使用,python-2.7,tkinter,Python 2.7,Tkinter,在下面的代码中,我可以使用USB条形码扫描仪扫描UPC代码,并获取12位数字字符串,然后使用名为bss的BASH脚本对其进行搜索,该脚本使用、Lynx进入互联网,找到该产品,并将所有不需要的文本剥离到描述中 问题在于,标签的更新次数似乎有限制。在名为def get_keyself的函数中,event I可以获取要更新两次的标签。在状态框中显示UPC代码,并将标签重置回就绪状态。。。。对该标签的任何更新只会显示最后定义的更新。这两者之间没有任何区别 为什么??在第二个函数def get_infos
#!/usr/bin/python
import Tkinter as tk
from Tkinter import *
import subprocess
class ShopApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
frameCenter = Frame(self)
frameCenter.configure(height=50, width=300, background='#dddbe3')
frameCenter.propagate(0)
frameCenter.pack(side=TOP)
frameStatus = Frame(self, padx=2, pady=2)
frameStatus.configure(height=30, width=300)
frameStatus.propagate(0)
frameStatus.pack(side=BOTTOM)
self.mdItemAdded = tk.Label(frameCenter, text="Waiting...")
self.mdItemAdded.config(font=('sans', 12, 'bold'))
self.mdItemAdded.pack(side=BOTTOM, fill=X)
self.code = ' '
self.status = tk.Label(frameStatus, text="Ready...")
self.status.config(height=20, bd=1, relief=SUNKEN, anchor=W)
self.status.pack(side=BOTTOM, fill=X)
self.bind('<Key>', self.get_key)
#Getting Barcode scan
def get_key(self, event):
if event.char in '0123456789':
self.code += event.char
self.status['text'] = "UPC Code: " + self.code
elif self.status == self.status:
self.status.after(3000)
self.status['text'] = "Ready..."
self.get_info()
self.code = ' '
#Displaying Results
def get_info(self):
result = subprocess.call('/home/pi/python/shop/bss ' + (self.code), shell=True)
if result == 0:
self.f = open ('final.txt', 'r')
self.line = self.f.readline()
self.f.close()
self.mdItemAdded.config(text="Item Added...\n" + self.line)
self.mdItemAdded.update_idletasks()
self.mdItemAdded.after(4000)
self.mdItemAdded.config(text="Waiting...")
shopper = ShopApp()
shopper.mainloop()
我已经更新了我的问题,以反映代码中的更正,这些更正最终解决了我的问题 解决办法是:
self.mdItemAdded.update_idletasks()
self.mdItemAdded.after(4000)
self.mdItemAdded.config(text="Waiting...")
添加到def_get_infoself函数的末尾。我希望这有助于任何可能遇到相同问题的人。您的一些缩进是不正确的。另外,你能不能写一个示例程序,不需要我们运行一些问题中没有包含的特殊脚本?FWIW,你可以更改标签的次数是绝对没有限制的。我算出来了。我必须将self.mdItemAdded.update_idletasks添加到def get_infoself函数的底部。我更新了我的代码以反映工作更改。如果修改问题中的代码以使其正常工作,将使阅读此问题的所有人感到困惑。要么在答案中填入答案,要么删除此问题。