python - 我在pyqt5中做浏览器,但是不知道如何在浏览器中放置网站内容
问题描述
所以基本上我希望网站内容在浏览器下,我不知道该怎么做。基本上,无论您单击哪个链接,搜索栏都应该在顶部。现在,我只是将它作为中央小部件,因为我不知道如何将它放在搜索栏下。这是代码:
import requests
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QGridLayout, QWidget
from PyQt5.QtCore import *
def check_if_url_is_valid(url):
if not url.startswith("http"):
return "http://" + url
elif url.startswith("http") or url.startswith("https"):
return url
def render_html():
website = QWebEngineView()
website.load(QUrl("https://google.com"))
website.show()
class StealthBrowser(QMainWindow):
def __init__(self):
super(StealthBrowser, self).__init__()
self.search = QtWidgets.QPushButton(self)
self.textbox = QLineEdit(self)
self.search_button_clicked1 = False
self.label = QtWidgets.QLabel(self)
self.browser = QWebEngineView()
self.initUi()
self.setGeometry(200, 200, 1000, 700)
self.setWindowTitle("StealthBrowser")
def initUi(self):
self.textbox.move(20, 20)
self.search.move(300, 15)
self.textbox.resize(280, 20)
self.search.setText("Search")
self.search.clicked.connect(lambda: self.search_button_clicked())
def search_button_clicked(self):
self.render_website()
print(self.textbox.text())
def render_website(self):
self.browser.setUrl(QUrl(check_if_url_is_valid(self.textbox.text())))
self.setCentralWidget(self.browser)
def window():
app = QApplication(sys.argv)
win = StealthBrowser()
win.show()
sys.exit(app.exec_())
window()
解决方案
您必须使用布局来定位元素,在本例中为 QGridLayout。
class StealthBrowser(QMainWindow):
def __init__(self):
super(StealthBrowser, self).__init__()
self.setGeometry(200, 200, 1000, 700)
self.setWindowTitle("StealthBrowser")
self.search = QPushButton("Search")
self.textbox = QLineEdit()
self.browser = QWebEngineView()
central_widget = QWidget()
self.setCentralWidget(central_widget)
lay = QGridLayout(central_widget)
lay.addWidget(self.textbox, 0, 0)
lay.addWidget(self.search, 0, 1)
lay.addWidget(self.browser, 1, 0, 1, 2)
self.search.clicked.connect(self.search_button_clicked)
def search_button_clicked(self):
self.render_website()
def render_website(self):
url = QUrl.fromUserInput(self.textbox.text())
self.browser.load(url)
推荐阅读
- c# - 正确使用正则表达式提取单词
- lstm - “numpy.ndarray”对象的错误没有属性“append”
- python - 如何将您的 Tinder data.json 转换为 CSV
- python - 查找列表中元素的索引
- python - 如何将安装库 pip 安装到 Azure Web 应用程序上的“antenv”venv?
- apache-flink - 更改在纱线上运行的 flink 作业的日志文件输出路径
- python - How to create new column with parts of the sentence from another column of pandas dataframe?
- javascript - 如何在 TypeScript 中表示包含多种类型的二维数组?
- azure-cognitive-services - 如何强制认知服务返回错误
- performance - WP 网站在 000webhost.com 上加载超过一分钟工作正常