用python做一个简单的浏览器

在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_()

简单界面的浏览器:

用python做一个简单的浏览器_第1张图片

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_())

有登录界面的浏览器:

用python做一个简单的浏览器_第2张图片

用python做一个简单的浏览器_第3张图片

注意:下面代码中的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()

 

你可能感兴趣的:(可视化界面)