这里有点初学者:)
所以在过去的几天里,我一直在做一个相对简单的网页刮板,但是有一个特别的目标。也就是说,我想和特金特相处得更好
所以,我制作了一个devlog窗口,它只是一个独立的控制台类型的东西。但问题是我想在devlog窗口中插入文本“live”,而文本来自不同线程中的不同脚本。如何实现此功能?这个devlog窗口也运行在一个线程中,以及它旁边的其他3个脚本中。这是我目前掌握的代码:
import Manager as AM
import tkinter as tk
from time import sleep # For some simple timing algorithms
Width = 700
Height = 500
FrameGeometry = str(Width) + "x" + str(Height)
# COLORS
LightGrey = "#D9D9D9"
DarkGrey = "#AAAAAA"
# Global variables.
ThreadsList = list()
def CreateDevLogWindow():
global Width
global Height
ThreadTemp_ = str(AM.FileManager(ReadData=2))
devlog = tk.Tk() # Secondary Devlog Interface.
FrameInfo = tk.Frame(master=devlog)
FrameText = tk.Frame(master=devlog)
ThreadText = tk.Label(master=FrameInfo, text="Total Threads: " + ThreadTemp_, bg="white")
ThreadTextActive = tk.Label(master=FrameInfo, text="Active Threads: " + ThreadTemp_, bg="white")
InfoText = tk.Text(FrameText, border=1, highlightthickness=1)
devlog.title("Devlog: YourOptimalScrapper")
devlog.geometry(str(Width) + "x" + str(Height))
devlog.config(bg="white")
FrameInfo.config(bg="white")
FrameText.config(bg="white", padx=5, pady=5)
FrameInfo.pack(side=tk.TOP, fill=tk.BOTH)
FrameText.pack(side=tk.BOTTOM, expand=True, fill=tk.BOTH)
ThreadText.grid(row=0)
ThreadTextActive.grid(row=1)
InfoText.pack(expand=True, fill=tk.BOTH)
while True:
if ThreadTemp_ != AM.FileManager(ReadData=2):
ThreadTemp_ = str(AM.FileManager(ReadData=2))
ThreadText.config(text="Total Threads: " + ThreadTemp_)
ThreadTextActive.config(text="Active Threads: " + ThreadTemp_)
devlog.update()
非常感谢您提供的任何帮助,请注意:下面还有更多代码,但我认为这并不是特别必要:)
首先,只需几行就可以在文本框中插入文本
如果您的脚本位于不同的线程中,那么您可以创建一个文件作为数据的“载体”
当您需要向文本框写入数据时,只需在任何线程中将文本写入文件,并更新上述代码中的while循环即可读取此文件,如果文件不为空,则更新文本框
编辑:您不需要在此线程之外调用此函数。只需在while循环中检查是否必须将新数据添加到日志中
在你的另一个线程中
相关问题 更多 >
编程相关推荐