【发布时间】:2015-10-09 18:28:16
【问题描述】:
我正在尝试显示 /proc/stat 文件中的一些数据。由于这些数据不断变化,我想在屏幕上的每个间隔(3 秒)后更新值。我如何使用 poll() 函数实现相同的功能?
编辑:我尝试使用线程和之后实现相同的目标。但我对它在我的 GUI 上的更新方式不满意。下面是我的相同代码..
def displayTab1(self):
self.slabel1=ttk.Label(self.page1,text=" User Mode : ")
self.slabel1.grid(row=1,column=1,sticky=E,pady=15,padx=5)
self.slabel2=ttk.Label(self.page1,text=" System Mode : ")
self.slabel2.grid(row=2,column=1,sticky=E,pady=15,padx=5)
self.slabel3=ttk.Label(self.page1,text=" Total CPU utilization : ")
self.slabel3.grid(row=3,column=1,sticky=E,pady=15,padx=5)
self.slabel31=ttk.Label(self.page1,text="%")
self.slabel31.grid(row=3,column=3,sticky=N+W,pady=15,padx=5)
self.slabel4=ttk.Label(self.page1,text=" No: of Interrupts : ")
self.slabel4.grid(row=4,column=1,sticky=E,pady=15,padx=5)
self.slabel5=ttk.Label(self.page1,text=" Context Switches : ")
self.slabel5.grid(row=5,column=1,sticky=E,pady=15,padx=5)
self.slabel6=ttk.Label(self.page1,text=" Total Memory : ")
self.slabel6.grid(row=6,column=1,sticky=E,pady=15,padx=5)
self.slabel7=ttk.Label(self.page1,text=" Available Memory : ")
self.slabel7.grid(row=7,column=1,sticky=E,pady=15,padx=5)
self.slabel8=ttk.Label(self.page1,text=" Memory Utilization: ")
self.slabel8.grid(row=8,column=1,sticky=E,pady=15,padx=5)
self.book.grid()
t1 = threading.Thread(target=self.tab1_Layout, args = ())
t1.daemon = True
t1.start()
def tab1_Layout(self):
self.MemFile = open('/proc/meminfo','r').readlines()
for line in self.MemFile:
if line.startswith('MemTotal:'):
self.MemTotal = int(line.split()[1])
if line.startswith('MemAvailable:'):
self.MemAvail = int(line.split()[1])
break
MemTotal=self.MemTotal
MemAvail=self.MemAvail
VarS=System.SystemInfo(self.usr_prev,self.sys_prev,self.idle_prev)
self.usr_cur,self.sys_cur,self.idle_cur,usermode,sysmode,totalcpu,intr,ctxt,MemUtil= VarS.deltaTime()
self.usrmodeVal = ttk.Label(self.page1,text = usermode)
self.sysmodeVal = ttk.Label(self.page1,text = sysmode)
self.totcpuVal = ttk.Label(self.page1,text = totalcpu)
self.intrVal = ttk.Label(self.page1,text = intr)
self.ctxtVal = ttk.Label(self.page1,text = ctxt)
self.MemTotalVal = ttk.Label(self.page1,text = MemTotal)
self.MemAvailVal = ttk.Label(self.page1,text = MemAvail)
self.MemUtilVal = ttk.Label(self.page1,text = MemUtil)
self.usrmodeVal.grid(row=1,column=2,sticky=W+E+N+S,padx=5,pady=5)
self.sysmodeVal.grid(row=2,column=2,sticky=W+E+N+S,padx=5,pady=5)
self.totcpuVal.grid(row=3,column=2,sticky=W+E+N+S,padx=5,pady=5)
self.intrVal.grid(row=4,column=2,sticky=W+E+N+S,padx=5,pady=5)
self.ctxtVal.grid(row=5,column=2,sticky=W+E+N+S,padx=5,pady=5)
self.MemTotalVal.grid(row=6,column=2,sticky=W+E+N+S,padx=5,pady=5)
self.MemAvailVal.grid(row=7,column=2,sticky=W+E+N+S,padx=5,pady=5)
self.MemUtilVal.grid(row=8,column=2,sticky=W+E+N+S,padx=5,pady=5)
self.page1.after(I,self.tab1_Layout)
【问题讨论】:
-
无限循环,其中包含
time.sleep -
你能举个例子吗?我试图获得相同的语法,但无法在谷歌上找到适合我的东西..
-
向我们展示您尝试过的代码,我们会告诉您哪里出错了
-
我想知道如何使用它。我以前使用过线程,后来也使用过,但对它在 GUI 上的方式不满意......
-
再次,将您的代码添加到您的帖子中,以便我们向您展示如何修复它
标签: python linux python-3.x tkinter epoll