基本上我试图将ubuntu的tail函数实现为python tkinter按钮。尾部代码工作正常,但只有当我尝试将其实现到tkinter时,我遇到了整个gui冻结的问题。我可以采取几种方法来解决这个问题,但我想知道什么是最简单,最快捷的方法。到目前为止,这是我的代码:
#gui code
from tkinter import *
from tkinter import filedialog
from tkinter import Tk, Button
from subprocess import Popen
import tkinter
import os
import time
master = Tk()
root = tkinter.Tk()
root.attributes("-topmost",True)
master.withdraw()
root.lift()
def userpass():
os.startfile('config.ini')
def follow(thefile):
thefile.seek(0,2) # Go to the end of the file
while True:
line = thefile.readline()
if not line:
time.sleep(1) # Sleep briefly
continue
yield line
def crap(tex):
loglines = follow(open("jessica.gw2.log"))
for line in loglines:
#print(line)
tex.insert(tkinter.END, line)
tex.see(tkinter.END)
def cbc(tex):
return lambda : crap(tex)
x = (root.winfo_screenwidth() - root.winfo_reqwidth()) / 1.1
y = (root.winfo_screenheight() - root.winfo_reqheight()) / 20
root.geometry("+%d+%d" % (x, y))
tex = tkinter.Text(root)
tex.pack(side=tkinter.BOTTOM)
b = Button(root, text="Set your Options ", command=userpass)
o = Button(root, text="Press to view logs", command = cbc(tex))
b.pack()
o.pack()
mainloop()
答案 0 :(得分:1)
改变了我的功能。只需稍作修改即可。我摆脱了垃圾,cbc和跟随功能,然后我改变了这个按钮
o = Button(root, text="Start monitoring Log file", command = viewlogfile)
以便它调用我添加的这个函数
def viewlogfile():
f = open('insertfilenamehere', "r")
text = f.read()
tex.insert(tkinter.END, text)
tex.see(tkinter.END)
root.after(3000,viewlogfile)
然后将其他所有内容保持不变