Python 如何用tkinter读取本地网页并显示在软件界面内?

Python 如何用tkinter读取本地网页并显示在软件界面内?,第1张

其实你只需要在tkinter嵌入外部浏览器软件即可桐稿巧,使用aardio语言创建浏览器(有示例),再嵌入到tkinter窗口中。

具体参考敬模这篇文章

现在可以使用tkwebview2了,使用WebView2在tkinter中显局键示网页。

一、Pyqt5

创建第一个窗体

很多人写窗体程序都是直接敲代码,不使用设计器,我个人不是很赞成这种做法。使用设计器的好处是直观、维护方便,尤其开发复杂窗体的效率羡伏戚高。

但是每次修改ui文件后,需要重新生成py文件,会将原来的内容覆盖掉,为了避免这种情况,引入了一个中间类。主要步骤如下:

1使用QtDesigner创建一个简单的对话框,保存成simpleDialog.ui。

2使用cmd,进入simpleDialog.ui文件所在的目录,运行命令pyuic5

simpleDialog.ui

>ui_simpleDialog.py

3打开ui_simpleDialog.py,pyqt自动生成的代码如下(无需任何修改):

from

PyQt5

import

QtCore,

QtGui,

QtWidgets

class

Ui_Form(object):#注意pyqt5窗体从object继承,不是QMainWindow了

def

setupUi(self,

Form):

Form.setObjectName("Form")

Form.resize(400,

300)

self.pushButton

=

QtWidgets.QPushButton(Form)

self.pushButton.setGeometry(QtCore.QRect(60,

70,

241,

131))

self.pushButton.setObjectName("pushButton")

self.retranslateUi(Form)

self.pushButton.clicked.connect(Form.close)

QtCore.QMetaObject.connectSlotsByName(Form)

def

retranslateUi(self,

Form):

_translate

=

QtCore.QCoreApplication.translate

Form.setWindowTitle(_translate("Form",

"Form"))

self.pushButton.setText(_translate("Form",

"PushButton"))

可以看到刚才新建的对话框的类名称是”Ui_Form”。

4新建一个simpleDialog.py文件,编写代码如下:

from

PyQt5

import

QtCore,

QtGui,

QtWidgets

from

ui_simpledialog

import

Ui_Form

import

sys

class

SimpleDialogForm(Ui_Form):#从自动生成的界面类继承

def

__init__(self,

parent

=

None):

super(SimpleDialogForm,

self).__init__()

def

yourFunctions(self):

Pass

 

#这个类中处理你自己的业务逻辑。界面ui可随心所欲的修改,不影响你已经编写的逻辑。

自定义一个类(SimpleDialogForm)继承自pyqt自动生成的类,然后覆写”构造函数”,剩余的工作就是你自己想要添加的功能了。

5完善运行测试代码,如下:

if

__name__

==

"__main__":

app

=

QtWidgets.QApplication(sys.argv)

main

=

QtWidgets.QMainWindow()#创建一个主窗体(必须要有一个主窗体)

content

=

SimpleDialogForm()#创建对话框

content.setupUi(main)#将对话框依附于主窗体

main.show()#主窗体显示

sys.exit(app.exec_())

6为什么要厅雀这么做?

基于界面与实现分离兄陵的原则,我们使用QtDesigner设计的窗体,仅仅作为界面使用,具体业务逻辑通过单独的文件实现,这样以后如果界面发生变动,pyqt自动生成窗体代码时不会覆盖掉我们已经编写的业务逻辑。

7推荐的做法:

为了有良好的封装性,将中间类修改为:

class

SimpleDialogForm(Ui_Form,

QtWidgets.QMainWindow):

def

__init__(self,

parent

=

None):

super(SimpleDialogForm,

self).__init__()

self.setupUi(self)#在此设置界面

#在此,可添加自定义的信号绑定

self.pushButton.clicked.connect(self.openFile)

self.pushButton_2.clicked.connect(self.closeApp)

测试代码这样写:

if

__name__

==

"__main__":

app

=

QtWidgets.QApplication(sys.argv)

main

=

SimpleDialogForm()

main.show()#在外面只需要调用simpleDialogForm显示就行,不需要关注内部如何实现了。

sys.exit(app.exec_())

省事一点就使用打包方法①给你介绍个工具SetupFactory7.0打包工具,可以支持扫描vb5.0和vb6.0工程文件自动扫描出昌模工程所使用到的dll文件,安装时自动注册,还是比较的方便好用的!不明白的地方可以问我(入门级的打包工具)Dll放到资源库中散迅纯,程序启动的时候再读取,注册,运行程序!那是不可能.exe文件启动时就开始检测运行环境,你没有注册DLL文件之类的第三方组件,那是运行不冲咐起来的!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12465100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存