如何在Tkinter窗口中打开网站?

4

我正在尝试使用Tkinter构建一个简单的Web浏览器。我想知道如何在Tkinter/Python中打开一个网站。


你具体遇到的问题是什么?是网页加载问题吗?还是HTML渲染问题?这个问题的提问方式对于Stack Overflow来说太过宽泛了(网络浏览器非常复杂)。 - Blckknght
@MalikBrahimi,原帖具体询问如何在Tkinter中打开网站,而不是使用其他工具。 - nbro
这是JavaFX的完美工作。 - motoku
我想创建一个带有网站的窗口。Java比Python更好吗?我慢慢地了解到,当涉及到创建软件时,Java可能是首选语言。 - Bro Michael
虽然tkinter可能不支持您寻找的功能,但其他流行的替代品,如Qt或wxWidgets支持该功能。 - norok2
3个回答

9
你想做的事情并不容易。Tkinter没有渲染HTML的方法。你需要自己解析HTML、CSS和Javascript,并将信息转换为画布或文本小部件上的显示。如果你只想处理段落、粗体、斜体和标题,那么可能不太难。但要呈现大多数真实世界中带有css和javascript的html,可能需要花费你数千个小时的工作才能做到完美。曾经有一个创建Tkinter HTML小部件的努力,但该项目多年来没有看到任何重大活动(http://tkhtml.tcl.tk/),据我所知,也从未与Tkinter集成过。它展示了很多潜力,但同时也表明呈现HTML是一项非常困难的任务。

这是我所知道的正确答案,为什么你要给我点踩呢?你是谁?或许一个简单的工作示例也很不错,但是… - nbro
@SeanPedersen:我已经更新了答案,如果您想更改投票,请查看。虽然我并不真的在乎投票本身,但我认为在评论中暗示在tkinter中呈现HTML是可能的是具有误导性的。渲染现代网页需要巨大的努力。 - Bryan Oakley
@BryanOakley 是的,你说得完全正确。我已经删除了我的抱怨。 - motoku
谢谢Bryan Oakley,你回答了我的问题。我知道Tkinter有些不对劲...它非常古老。我应该坚持使用Visual Basic,它带有一个网页浏览器工具。 - Bro Michael
@BroMichael:我认为你会发现大多数(全部?)Python GUI工具包都缺乏一个完整的HTML小部件,尽管有些可以呈现一些非常基本的HTML。但是,如果您想要一种强大的方式来呈现网页,您应该考虑使用Visual Basic或其他.NET语言。 - Bryan Oakley

2

首先,您可以使用HTMLParser解析HTML内容。第二(这是一个非常深入的过程),您可以在包含位图的画布中显示数据,在解析时检测用户输入。话虽如此,Bryan是正确的。


1
一种方法
import tkinter
import tkinter as tk
root = tk.Tk()
frame = tkinterweb.HtmlFrame(root)
frame.load_website('https://pokemondb.net/')    
frame.pack(fill="both", expand=True)
root.mainloop()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接