PyQt5 QWebEngineView-从文件中进行标记-Python
我有这样一种方法:读取文件并将内容转换为纯文本PyQt5 QWebEngineView-从文件中进行标记-Python,python,pyqt5,Python,Pyqt5,我有这样一种方法:读取文件并将内容转换为纯文本 def show_open_dialog(): global file_path if not save_if_modified(): return file_name, _ = QFileDialog.getOpenFileName( window_area, 'Open fle...', os.getcwd(), 'Text
def show_open_dialog():
global file_path
if not save_if_modified():
return
file_name, _ = QFileDialog.getOpenFileName(
window_area,
'Open fle...',
os.getcwd(),
'Text files (*.txt *.py)'
)
if file_name:
with open(file_name, 'r') as f:
# Print content into text area.
text_area.setPlainText(f.read())
file_path = file_name
当这个方法被调用时,它会打开一个窗口,在那里我可以选择一个文件并像Windows的记事本一样对它充电,它工作得很好。现在我要做的是用该文件中的信息创建一个标记,也就是说,将其传递给HTML
我已经创建了QWebEngineView元素
browser_area = QWebEngineView()
这是我在“with open”中所做的修改,但它不起作用
# Print content into text area.
text_area.setPlainText(f.read())
# Raw data.
file_content = f.read()
# To HTML.
browser_area.setHtml(file_content)
# Show it.
browser_area.show()
打印内容后,仅显示一个空窗口
我还尝试了(markdown2.markdown(file_content))而不是.setHtml(),但它也不起作用
目前,我只想在新窗口中显示内容,并在无法加载HTML时显示消息。当访问文件对象时,read(size=-1)
函数从流中读取size
字节数,并将流置于该位置
with open('somefile', 'r') as f:
# reads the first 10 bytes
start = f.read(10)
# reads the *next* 10 bytes
more = f.read(10)
# move the position at the beginning
f.seek(0)
another = f.read(10)
print(start == another)
# This will print "True"
如果大小为-1(默认值),则表示读取整个对象,然后位置位于末尾。由于文件末尾没有什么可读的,如果您再次尝试读取,显然将什么也看不到
如果需要多次访问读取的数据,应将其存储在临时变量中:
with open(file_name, 'r') as f:
data = f.read()
text_area.setPlainText(data)
browser_area.setHtml(data)
打开(文件名'r')作为f:
data=f.read()
文本区域。设置纯文本(数据)
浏览器_area.setHtml(数据)
谢谢,它工作正常,可以读取文件,但由于某些原因,窗口总是空出来。我在另一个文件中做了一个基本的例子,试图打开一个网页,但结果是一样的,所以问题一定是在渲染或其他方面,但我不知道它可能是什么。WSL和Windows都不呈现QWebEngineView。@GerRubio我尝试过,它可以与一个简单的QWebEngineView实例和一个基本HTML文件一起工作;我建议您编辑您的问题,提供一个包含一个html文件,可以重现问题(但不要更改文件加载的方面,否则整个帖子可能会导致混乱)。