python能做界面吗_Python中利用PyQt5做界面开发-Go语言中文社区

一、PyQt5的环境配置

1、安装PyQt5

第一,也是最简单的方法,下载预编译版本的pyqt,这是一个exe文件,直接运行安装程序即可(安装过程中会提示选择python的安装目录).要注意的是,下载的预编译pyqt安装包的位数版本一定要与本机python的位数和版本保持一致. 安装包可以在sourceforge上找到,在sourceforge官网搜索pyqt即可.

附上一个下载链接:

PyQt5-5.6-gpl-Py3.5-Qt5.6.0-x32-2.exe:Download PyQt from SourceForge.net

第二,使用pip直接安装.

python3.x : pip3 install PyQt5

python2.7x: pip install PyQt5

此外,安装PyQt5要注意两点:

一、PyQt5的环境变量配置

二、PyQt5的版本要与本地python的版本保持一致。

2、QtDesigner安装

QtDesigner简单介绍

Qtdesigner是Python设计里面一个非常实用的工具,使得人们编写qt界面可以不仅仅是使用纯代码,而可以在可视化的基础上设置,非常方便。用户安装PyQt5后,系统会默认安装QtDesigner工具。

QtDesigner的默认默认路径: C:pythonpythonLibsite-packagesPyQt5designer.exe

a、安装PyQt5-tools

Python环境需要安装designer。 在终端执行pip命令安装完PyQt5-tools。

b、配置PyCharm

打开Pycharm,然后按照下面路径打开Extrernal Tools:

File->Tools->Extrernal Tools->点击“+”号->弹出对话框,配置如下:

(1).增加QT设计界面“Qt Designer” —— 这个就是设计Qt界面的工具

Program选择PyQt安装目录中 designer.exe 的路径

Work directory 使用变量 ProjectFileDirProjectFileDir (点击后面的…)

[图片上传失败…(image-e81206-1526303573660)]

(2).增加“PyUIC” ——这个主要是用来将 Qt界面 转换成 py代码

Program选择PyQt安装目录中 pyuic5.bat 的路径

parameters设置为FileNameFileName -o FileNameWithoutExtensionFileNameWithoutExtension.py

Work directory 设置为 ProjectFileDirProjectFileDir (点击后面的…)

配置完成后可以在tools里面看到我们的工具

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3piYjI5NzkxODY1Nw==,size_16,color_FFFFFF,t_70

二、PyQt的使用。

**

第一步,界面的编写

**

打开Pycharm的界面设计工具QTDsigner

Pycharm->Tools->External Tools->QTDesigner

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3piYjI5NzkxODY1Nw==,size_16,color_FFFFFF,t_70

创建界面,选择Wdiget

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3piYjI5NzkxODY1Nw==,size_16,color_FFFFFF,t_70

分别在窗口添加如下控件,Lable、pushButton、checkBox、lineEdit如图所示:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3piYjI5NzkxODY1Nw==,size_16,color_FFFFFF,t_70

做好布局后,把文件保存到我们的项目目录下

20190114164130916.png

把.ui文件转换成.py文件,右键.ui使用PyUIC工具把.ui文件转换成.py文件

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3piYjI5NzkxODY1Nw==,size_16,color_FFFFFF,t_70

生成的.py文件

20190114164249197.png

测试我们的.py文件:在我们的login.py文件下面添加if __name__ == '__main__':

app = QtWidgets.QApplication(sys.argv)

ui = LoginUi()

ui.show()

sys.exit(app.exec_())

现在,运行login.py。就可以看到登录界面了。

顺便在此贴出界面编写生成的代码,可以直接粘贴此代码运行弹出界面。

from PyQt5 import QtWidgets

import sys

class LoginUi(QtWidgets.QDialog):

def __init__(self):

super(LoginUi, self).__init__()

self.label_user = QtWidgets.QLabel()

self.label_password = QtWidgets.QLabel()

self.lineEdit_user = QtWidgets.QLineEdit()

self.lineEdit_password = QtWidgets.QLineEdit()

self.pussButton_signin = QtWidgets.QPushButton()

self.pussButton_signup = QtWidgets.QPushButton()

self.h_layout_user = QtWidgets.QHBoxLayout()

self.h_layout_password = QtWidgets.QHBoxLayout()

self.h_layout_button = QtWidgets.QHBoxLayout()

self.v_layout_all = QtWidgets.QVBoxLayout()

self.h_layout_user.addWidget(self.label_user)

self.h_layout_user.addWidget(self.lineEdit_user)

self.h_layout_password.addWidget(self.label_password)

self.h_layout_password.addWidget(self.lineEdit_password)

self.h_layout_button.addWidget(self.pussButton_signin)

self.h_layout_button.addWidget(self.pussButton_signup)

self.v_layout_all.addLayout(self.h_layout_user)

self.v_layout_all.addLayout(self.h_layout_password)

self.v_layout_all.addLayout(self.h_layout_button)

self.setLayout(self.v_layout_all)

self.setWindowTitle("登陆界面")

self.label_user.setText("用户名:")

self.label_password.setText(" 密码:")

self.pussButton_signin.setText("登陆")

self.pussButton_signup.setText("注册")

if __name__ == '__main__':

app = QtWidgets.QApplication(sys.argv)

ui = LoginUi()

ui.show()

sys.exit(app.exec_())

**

第二步,逻辑的编写

**

在做好界面以后,如何让界面运行起来,这就需要我们编写界面的逻辑代码,实现各个组件、控件的功能。

我在这里实现的是一个数据库的加密登录界面,事先生成一个sqlite数据库,然后在编写逻辑代码中使用。

在此贴出整个逻辑代码。

from login_ui import LoginUi

from PyQt5 import QtWidgets

import sys

import sqlite3

import hashlib

import time

# 继承界面

class LoginLogic(LoginUi):

def __init__(self):

super(LoginLogic, self).__init__()

self.conn = sqlite3.connect("user.db") # 使用其他数据库的话此处和import模块需要修改

# 此处改变密码输入框lineEdit_password的属性,使其不现实密码

self.lineEdit_password.setEchoMode(QtWidgets.QLineEdit.Password)

# qt的信号槽机制,连接按钮的点击事件和相应的方法

self.pussButton_signin.clicked.connect(lambda: self.sign_in())

self.pussButton_signup.clicked.connect(lambda: self.sign_up())

@staticmethod

def hash(src):

"""

哈希md5加密方法

:param src: 字符串str

:return:

"""

src = (src + "请使用私钥加密").encode("utf-8")

m = hashlib.md5()

m.update(src)

return m.hexdigest()

def sign_in(self):

"""

登陆方法

:return:

"""

c_sqlite = self.conn.cursor()

user_name = self.lineEdit_user.text()

user_password = self.lineEdit_password.text()

if user_name == "" or user_password == "":

self.lineEdit_user.setText("请输入用户名和密码")

else:

c_sqlite.execute("""SELECT password FROM user WHERE name = ?""", (user_name,))

password = c_sqlite.fetchall()

if not password:

self.lineEdit_user.setText("此用户未注册")

else:

if self.hash(user_password) == password[0][0]:

self.lineEdit_user.setText("登陆成功")

time.sleep(1)

self.open_main_window()

self.close()

else:

self.lineEdit_user.setText("密码不正确")

def sign_up(self):

"""

注册方法

:return:

"""

c_sqlite = self.conn.cursor()

user_name = self.lineEdit_user.text()

user_password = self.lineEdit_password.text()

if user_name == "" or user_password == "":

self.lineEdit_user.setText("请输入用户名和密码")

else:

user_password = self.hash(user_password)

c_sqlite.execute("""SELECT password FROM user WHERE name = ?""", (user_name,))

if not c_sqlite.fetchall():

c_sqlite.execute("""INSERT INTO user VALUES (NULL ,?,?)""", (user_name, user_password))

self.conn.commit()

self.lineEdit_user.setText("注册成功")

else:

self.lineEdit_user.setText("用户名重复")

def open_main_window(self):

"""

此处添加打开另一个窗口的程序

:return:

"""

下方注释的代码根据自己的情况更改

# ui = Ui_Dialog()

# ui.show()

print("打开另一个窗口")

if __name__ == '__main__':

app = QtWidgets.QApplication(sys.argv)

ui = LoginLogic()

ui.show()

sys.exit(app.exec_())

直接运行逻辑代码,既可看到登陆界面:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3piYjI5NzkxODY1Nw==,size_16,color_FFFFFF,t_70

至此,就完成了整个利用PyQt做界面开发的设计实现,登录界面功能还不够完善,后续可自己进行添加完善。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值