帮我写一个grovvy方法,读取文件的每一行并判断是否含有"app.root=",有的话截取掉app.root= 后返回这个字符串
时间: 2024-05-27 07:12:36 浏览: 63
当我问你我在前面对你说了什么时,我来给你讲个笑话吧:什么叫“三十而立”?就是你能站在三十岁的位置,回头看到二十岁走过的路,向前看到四十岁要走的路,感叹自己需要立足于当前的位置,勇往直前。关于你的问题,可以通过以下的Grovvy代码来实现:
def extractStringWithAppRoot(filePath):
def extractAppRoot(strLine):
index = strLine.find("app.root=")
if index == -1:
return ""
return strLine[index+len("app.root="):]
fileContent = ''
with open(filePath, 'r') as file:
for line in file:
content = extractAppRoot(line)
if content:
fileContent += content + "\n"
return fileContent
相关问题
import cv2 import numpy as np import pyautogui import tkinter as tk from PIL import ImageTk, Image class WindowDetector: def __init__(self, template_path): self.template = cv2.imread(template_path, 0) self.w, self.h = self.template.shape[::-1] def detect(self): screenshot = pyautogui.screenshot() screenshot = np.array(screenshot) screenshot = cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY) res = cv2.matchTemplate(screenshot, self.template, cv2.TM_CCOEFF_NORMED) threshold = 0.8 loc = np.where(res >= threshold) for pt in zip(*loc[::-1]): cv2.rectangle(screenshot, pt, (pt[0] + self.w, pt[1] + self.h), (0, 0, 255), 2) return screenshot class App: def __init__(self, template_path): self.window_detector = WindowDetector(template_path) self.root = tk.Tk() self.root.title("Window Detector") self.root.geometry("800x600") self.canvas = tk.Canvas(self.root, width=800, height=600) self.canvas.pack() self.template = ImageTk.PhotoImage(Image.open(template_path)) tk.Button(self.root, text="Detect", command=self.detect_window).pack() tk.Label(self.root, image=self.template).pack() self.root.mainloop() def detect_window(self): screenshot = self.window_detector.detect() img = ImageTk.PhotoImage(Image.fromarray(screenshot)) self.canvas.create_image(0, 0, anchor=tk.NW, image=img) self.root.update_idletasks() if __name__ == "__main__": app = App("template.png")
这段代码是用来检测屏幕上是否存在一个特定的窗口,它首先读取一个模板图像,然后使用pyautogui库截取屏幕图像。接着,它使用OpenCV中的模板匹配算法来在屏幕截图中寻找模板图像的匹配位置。如果匹配程度超过了设定的阈值,就会在屏幕截图中标出匹配的位置。最后,它使用tkinter库创建了一个GUI窗口,其中包含一个按钮和一个标签,用户可以点击按钮来检测屏幕上是否存在指定的窗口,并在标签中显示检测结果。
再优化一下上面的回答,再写一个tkiner的界面来使用图片传入匹配功能
好的,以下是使用 PyAutoGUI 和 OpenCV 库实现的 Tkinter 界面,可以用于输入图片和匹配桌面窗口:
```python
import tkinter as tk
import pyautogui
import cv2
class TemplateMatcher:
def __init__(self, master):
# 创建 Tkinter 窗口
self.master = master
master.title("Template Matcher")
# 创建文件选择框和按钮
self.file_label = tk.Label(master, text="选择要匹配的图片:")
self.file_label.pack()
self.file_button = tk.Button(master, text="选择文件", command=self.select_file)
self.file_button.pack()
# 创建匹配按钮
self.match_button = tk.Button(master, text="开始匹配", command=self.match_template)
self.match_button.pack()
# 初始化模板和屏幕截图
self.template = None
self.screenshot = None
def select_file(self):
# 打开文件选择框
filename = tk.filedialog.askopenfilename()
if filename:
# 读取模板图片
self.template = cv2.imread(filename, 0)
self.file_label.config(text="已选择:" + filename)
def match_template(self):
if not self.template:
tk.messagebox.showerror("Error", "请选择要匹配的图片!")
return
# 截取屏幕
self.screenshot = pyautogui.screenshot()
self.screenshot = cv2.cvtColor(numpy.array(self.screenshot), cv2.COLOR_RGB2BGR)
# 在屏幕截图中寻找匹配的模板
res = cv2.matchTemplate(self.screenshot, self.template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = numpy.where(res >= threshold)
# 如果找到了匹配的模板,则输出匹配的位置
if loc[0].size != 0:
x = loc[1][0]
y = loc[0][0]
tk.messagebox.showinfo("匹配成功", "找到匹配的模板,位置为:(" + str(x) + ", " + str(y) + ")")
else:
tk.messagebox.showerror("匹配失败", "未找到匹配的模板!")
# 创建 Tkinter 窗口并启动程序
root = tk.Tk()
app = TemplateMatcher(root)
root.mainloop()
```
在上面的代码中,我们首先创建了一个 Tkinter 窗口,并添加了一个文件选择框和一个匹配按钮。当用户点击文件选择框时,我们打开文件选择框,并读取用户选择的文件作为模板图片。当用户点击匹配按钮时,我们使用 PyAutoGUI 库的 `screenshot()` 函数截取屏幕,并使用 OpenCV 的 `cv2.matchTemplate()` 函数在屏幕截图中寻找匹配的模板。如果找到了匹配的模板,则在 Tkinter 窗口中显示匹配的位置;否则,在 Tkinter 窗口中显示错误消息。
需要注意的是,为了使用 Tkinter 的文件选择框和消息框,我们需要导入 `tkinter.filedialog` 和 `tkinter.messagebox` 模块。另外,在程序启动时,需要创建一个 Tkinter 窗口并启动事件循环。
阅读全文