sss*_*sss 8 tkinter python-3.x python-webbrowser
我用 python tkinter 制作了一个 GUI 应用程序,我想在我的 tKinter windown 中放置一个迷你网页浏览器,而不打开新选项卡。我怎样才能做到这一点?
这是一个老问题,但对于将来遇到这个问题的任何人来说,在 tkinter 中嵌入网页是可能的。
您可以尝试tkinterweb(免责声明:我是作者)。它基于tkinterhtml,但支持超链接、样式、图像等。只需使用 安装它pip install tkinterweb,然后运行:
import tkinterweb
import tkinter as tk
root = tk.Tk()
frame = tkinterweb.HtmlFrame(root)
frame.load_website(YOUR_WEBSITE)
frame.pack(fill="both", expand=True)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
Tkinterweb 运行已停止使用的 Tk HTML 小部件,因此复杂的网站可能无法正常工作。不过,更简单的网站运行得很好。
另一个不错的选择是cefpython,它是嵌入 Tkinter 中的成熟的 chromium 浏览器。在 tkinter 中使用 cefpython 的示例可以在https://github.com/cztomczak/cefpython/blob/master/examples/tkinter_.py找到。不幸的是,cefpython 对于较新的 python 版本确实存在一些问题,并且可能会消耗一些资源,但它确实工作得很好。
如果您的 Tkinter 应用程序需要完整的网络浏览器,我建议您尝试 cefpython。如果您只需要非常快速且简单的东西来显示基本网页或帮助窗口,请尝试 tkinterweb。
PyQt5我知道这是一个老问题,但如果您想创建网络浏览器窗口,我建议您使用。
这是一个基本的实现,它将打开一个自定义浏览器到谷歌主页:
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.browser = QWebEngineView()
self.browser.setUrl(QUrl('http://google.com'))
self.setCentralWidget(self.browser)
self.showMaximized()
app = QApplication(sys.argv)
QApplication.setApplicationName('Example Custom Browser')
window = MainWindow()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
除了执行谷歌搜索之外,这个浏览器几乎没什么用处,但您可以添加带有功能按钮的导航栏,只需很少的额外努力。一种基本方法可能如下所示:
navbar = QToolBar()
self.addToolBar(navbar)
back_btn = QAction('Back', self)
back_btn.triggered.connect(self.browser.back)
navbar.addAction(back_btn)
forward_btn = QAction('Forward', self)
forward_btn.triggered.connect(self.browser.forward)
navbar.addAction(forward_btn)
reload_btn = QAction('Reload', self)
reload_btn.triggered.connect(self.browser.reload)
navbar.addAction(reload_btn)
home_btn = QAction('Home', self)
home_btn.triggered.connect(self.navigate_home)
navbar.addAction(home_btn)
self.url_bar = QLineEdit()
self.url_bar.returnPressed.connect(self.navigate_to_url)
navbar.addWidget(self.url_bar)
self.browser.urlChanged.connect(self.update_url)
def navigate_home(self):
self.browser.setUrl(QUrl('https://www.google.com'))
def navigate_to_url(self):
url = self.url_bar.text()
self.browser.setUrl(QUrl(url))
def update_url(self, q):
self.url_bar.setText(q.toString())
Run Code Online (Sandbox Code Playgroud)
如果将其添加到MainWindow类中,您现在应该在左上角看到“后退”、“前进”、“重新加载”和“主页”按钮。他们会做你可能期望的事情,即向前、向后一页、重新加载页面或带你回家(我只是将其设置为 google.com)。
抱歉,这太长了,但我希望它演示了如何简单地实现 PyQt5 浏览器窗口。
你不能。tkinter 库中没有允许您显示 HTML 的小部件。如果您确实需要使用 tkinter,您可以尝试tkinterhtml,但它很奇怪,并且不适用于很多功能(超链接、图像...)
如果你只想创建一个带有 Web 界面的 Python 应用程序,你最好使用像Flask或django这样的 Python Web 框架。
| 归档时间: |
|
| 查看次数: |
22565 次 |
| 最近记录: |