在Python中,可以使用Tkinter库来实现GUI应用程序,包括多窗口管理。以下是一个简单的示例,展示了如何使用Tkinter创建一个具有多个窗口的爬虫应用程序:
import tkinter as tk from tkinter import ttk import requests from bs4 import BeautifulSoup class WebScraperApp: def __init__(self, root): self.root = root self.root.title("Web Scraper") # 创建第一个窗口 self.frame1 = ttk.Frame(self.root, padding="10") self.frame1.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) ttk.Label(self.frame1, text="Enter URL:").grid(row=0, column=0, padx=5, pady=5) self.url_entry = ttk.Entry(self.frame1) self.url_entry.grid(row=0, column=1, padx=5, pady=5) self.scrape_button = ttk.Button(self.frame1, text="Scrape", command=self.scrape_url) self.scrape_button.grid(row=1, column=0, columnspan=2, pady=10) # 创建第二个窗口 self.frame2 = ttk.Frame(self.root, padding="10") self.frame2.grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) self.result_label = ttk.Label(self.frame2, text="") self.result_label.pack() def scrape_url(self): url = self.url_entry.get() if url: response = requests.get(url) soup = BeautifulSoup(response.content, "html.parser") # 这里可以添加解析网页内容的代码 result = f"Scraped content from {url}" self.result_label.config(text=result) else: self.result_label.config(text="Please enter a URL.") if __name__ == "__main__": root = tk.Tk() app = WebScraperApp(root) root.mainloop() 在这个示例中,我们创建了一个名为WebScraperApp的类,它接受一个Tkinter根窗口作为参数。我们在__init__方法中创建了两个框架(frame1和frame2),分别用于输入URL和显示抓取结果。我们还添加了一个按钮,当点击该按钮时,会调用scrape_url方法来抓取URL的内容并显示在第二个窗口中。
这个示例仅用于演示目的,实际应用中可以根据需要扩展和优化。例如,可以使用线程来避免阻塞UI线程,或者根据用户输入的URL动态创建多个窗口来管理不同的网页。