在Linux系统下进行编译。

Linux系统安装PyQt5

sudo apt-get install python3-pyqt5

打开网页:

import webbrowser

webbrowser.open('http://www.baidu.com/')

用pyqt5打开网页:

import sys

from PyQt5.QtCore import QUrl

from PyQt5.QtWidgets import QApplication

from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineView

app = QApplication(sys.argv)

browser = QWebEngineView()

browser.load(QUrl("http://www.baidu.com/"))

browser.show()

app.exec_()

简单界面的浏览器:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton ,QDesktopWidget ,QLabel ,QGridLayout

import webbrowser ,sys

class Ui_MainWindow(QWidget):

item_name = "PyQt打开外部链接"

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.tips_1 = QLabel("网站:http://www.baidu.com/");

self.tips_1.setOpenExternalLinks(True)

self.btn_webbrowser = QPushButton('webbrowser效果', self)

self.btn_webbrowser.clicked.connect(self.btn_webbrowser_Clicked)

grid = QGridLayout()

grid.setSpacing(10)

grid.addWidget(self.btn_webbrowser, 1, 0)

grid.addWidget(self.tips_1, 2, 0)

self.setLayout(grid)

self.resize(250, 150)

self.setMinimumSize(266, 304);

self.setMaximumSize(266, 304);

self.center()

self.setWindowTitle(self.item_name)

self.show()

def btn_webbrowser_Clicked(self):

webbrowser.open('http://www.baidu.com/')

def center(self):

qr = self.frameGeometry()

cp = QDesktopWidget().availableGeometry().center()

qr.moveCenter(cp)

self.move(qr.topLeft())

if __name__ == "__main__":

app = QApplication(sys.argv)

a = Ui_MainWindow()

sys.exit(app.exec_())

有登录界面的浏览器:

注意:下面代码中的jl.png文件和需要编译的.py文件放在同一个文件夹下。

该浏览器需要注册账号,输入登录密码,方能跳转到百度网页。

源代码:

import tkinter as tk

from tkinter import messagebox # import this to fix messagebox error

import pickle

import webbrowser

window = tk.Tk()

window.title('静静樑樑浏览器欢迎你')

window.geometry('450x300')

# welcome image

canvas = tk.Canvas(window, height=200, width=500)

image_file = tk.PhotoImage(file='jl.png')

image = canvas.create_image(180,20, anchor='nw', image=image_file)

canvas.pack(side='top')

# user information

tk.Label(window, text='User name: ').place(x=120, y= 150)

tk.Label(window, text='Password: ').place(x=120, y= 190)

var_usr_name = tk.StringVar()

var_usr_name.set('jingliang')

entry_usr_name = tk.Entry(window, textvariable=var_usr_name)

entry_usr_name.place(x=200, y=150)

var_usr_pwd = tk.StringVar()

entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*')

entry_usr_pwd.place(x=200, y=190)

def usr_login():

usr_name = var_usr_name.get()

usr_pwd = var_usr_pwd.get()

try:

with open('usrs_info.pickle', 'rb') as usr_file:

usrs_info = pickle.load(usr_file)

except FileNotFoundError:

with open('usrs_info.pickle', 'wb') as usr_file:

usrs_info = {'admin': 'admin'}

pickle.dump(usrs_info, usr_file)

if usr_name in usrs_info:

if usr_pwd == usrs_info[usr_name]:

webbrowser.open('http://www.baidu.com/')

#tk.messagebox.showinfo(title='Welcome', message='How are you? ' + usr_name)

else:

tk.messagebox.showerror(message='Error, your password is wrong, try again.')

else:

is_sign_up = tk.messagebox.askyesno('Welcome',

'You have not signed up yet. Sign up today?')

if is_sign_up:

usr_sign_up()

def usr_sign_up():

def sign_to_Mofan_Python():

np = new_pwd.get()

npf = new_pwd_confirm.get()

nn = new_name.get()

with open('usrs_info.pickle', 'rb') as usr_file:

exist_usr_info = pickle.load(usr_file)

if np != npf:

tk.messagebox.showerror('Error', 'Password and confirm password must be the same!')

elif nn in exist_usr_info:

tk.messagebox.showerror('Error', 'The user has already signed up!')

else:

exist_usr_info[nn] = np

with open('usrs_info.pickle', 'wb') as usr_file:

pickle.dump(exist_usr_info, usr_file)

tk.messagebox.showinfo('Welcome', 'You have successfully signed up!')

window_sign_up.destroy()

window_sign_up = tk.Toplevel(window)

window_sign_up.geometry('350x200')

window_sign_up.title('Sign up window')

new_name = tk.StringVar()

new_name.set('chenfeihao')

tk.Label(window_sign_up, text='User name: ').place(x=10, y= 10)

entry_new_name = tk.Entry(window_sign_up, textvariable=new_name)

entry_new_name.place(x=150, y=10)

new_pwd = tk.StringVar()

tk.Label(window_sign_up, text='Password: ').place(x=10, y=50)

entry_usr_pwd = tk.Entry(window_sign_up, textvariable=new_pwd, show='*')

entry_usr_pwd.place(x=150, y=50)

new_pwd_confirm = tk.StringVar()

tk.Label(window_sign_up, text='Confirm password: ').place(x=10, y= 90)

entry_usr_pwd_confirm = tk.Entry(window_sign_up, textvariable=new_pwd_confirm, show='*')

entry_usr_pwd_confirm.place(x=150, y=90)

btn_comfirm_sign_up = tk.Button(window_sign_up, text='Sign up', command=sign_to_Mofan_Python)

btn_comfirm_sign_up.place(x=150, y=130)

# login and sign up button

btn_login = tk.Button(window, text='Log in', command=usr_login)

btn_login.place(x=270, y=230)

btn_sign_up = tk.Button(window, text='Sign up', command=usr_sign_up)

btn_sign_up.place(x=120, y=230)

window.mainloop()

python做一个浏览器_用python做一个简单的浏览器相关推荐

  1. python编辑游戏脚本_用PYTHON做一个简单的游戏脚本(基础,详细)

    引言 这段时间迷上了玩点点点的小游戏,但是某些重复的环节着实无聊,就想着能不能用PYTHON做一个游戏脚本,不过为了熟悉需要做脚本的各个模块,于是打算在4399上找一个比较像的游戏做个脚本练练手,后来 ...

  2. python 还原九宫格图片_用Python做一个好玩的朋友圈九宫格抽奖

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...

  3. python编写一个名片_教你做一张能运行 Python 的名片,成本只要20元!

    作为一名普普通通的开发者,改变世界估计是办不到了,但可以让世界更 Geek 一些. 极客名片的诞生 如标题所说,表面上看这是一个名片,印着姓名.职位.邮箱.GitHub 地址,但其实它是一台完整的.迷 ...

  4. python照片转卡通_用Python做一个网站,照片生成漫画头像,有这个网站就够了。...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进阶者 ( 想要学习Python?Pyth ...

  5. python社团宣传语_用Python做一个好玩的朋友圈九宫格抽奖

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...

  6. 如何给python爬虫加界面_给Python爬虫做一个界面.上

    做爬虫做了那么久,开始逐渐不满足写好程序,每次只能完成一件事情.开始思考如何可以做一个简单界面交互,再增加爬虫的可操作室,做交互界面有两个思路: 用Django做一个web界面: 用PyQt做一个ex ...

  7. 使用python做一个闹钟_用Python写一个简单地闹钟

    一.闹钟程序如下: import sys import string from time import sleep sa = sys.argv lsa = len(sys.argv) if lsa ! ...

  8. python时间序列因果检验_用python做时间序列预测八:Granger causality test(格兰杰因果检验)...

    如果想知道一个序列是否对预测另一个序列有用,可以用Granger causality test(格兰杰因果检验). Granger causality test的思想 如果使用时间序列X和Y的历史值来 ...

  9. Python识别表格图_使用Python究竟可以做什么?下面是Python的3个主要应用

    原文传送门: https://medium.com/free-code-camp/what-can-you-do-with-python-the-3-main-applications-518db9a ...

  10. 学python编程能做什么项目_十个Python练手的实战项目,学会这些Python就基本没问题了...

    python项目练习一:即时标记 这是<python基础教程>后面的实践,照着写写,一方面是来熟悉python的代码方式,另一方面是练习使用python中的基本的以及非基本的语法,做到熟能 ...

最新文章

  1. Unity创造没有代码的游戏学习教程
  2. 什么是边缘计算(Edge AI)?
  3. R语言实战应用精讲50篇(十三)-如何使用JAVA调用R语言,两种语言的完美结合
  4. 深度学习核心技术精讲100篇(四十八)-TB级的日志监控系统很难?带你使用ELK轻松搭建日志监控系统
  5. 【机器学习】深度剖析 LightGBM vs XGBOOST 哪个更胜一筹
  6. lvs之 lvs原理架构介绍
  7. appium定位WebView页面元素
  8. linux命令chmod如果当前用户属于多个组,那这个命令中的g指的是哪个组?按什么规则?
  9. Java网页开发中model实现Serializable接口的原因
  10. python-描述符的操作
  11. Golang的协程池设计
  12. pivot 与 unpivot函数
  13. 《Java语言程序设计与数据结构》编程练习答案(第十七章)
  14. Ubuntu 11.04上安装jdk1.6+oracle 11g笔记
  15. 矿大开学计算机考试,矿大计算机基础考试题库.pdf
  16. 2022年ASO与分发优化方法汇总
  17. [区间dp]涂色 洛谷P4170
  18. python做爬虫选课_Python2爬虫:以爬取大学本学期绩点为例(实战)
  19. 报错Failed to resolve component: tree-item at <Tree onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< n
  20. vue3.0网易云音乐及入门小案例

热门文章

  1. flatpak安装的firefox视频播放卡顿的解决方案
  2. (二)VISIO 中间带箭头的弧线怎么画
  3. 4600万台销量!树莓派炼成之路
  4. 十大排序算法——C语言实现
  5. ios wifi 定位_Wifi 定位原理及 iOS Wifi 列表获取(示例代码)
  6. c语言全局变量global,C语言定义共享全局变量
  7. (5)Spring框架----Bean作用域
  8. 手把手教你:安装svn出现could not write value to key的错误
  9. bootstrap 三级导航
  10. 矩阵卷积运算的具体过程,很简单