pyqt5重庆连接二手房数据可视化完整项目

基于VSC+pyQt5+mysql+python,本篇文件将介绍完整的二手房数据可视化项目,从登录界面连接数据库在到主界面

先看效果图


用到的工具与软件

VSC+pyQt5+mysql+python

vsc用的最新版本,python3.8.7,mysql用的8.0.1,pyqt5用的是最新版,直接默安装的,环境变量这些自己要配置好

 

一、登录界面的制作

 大致界面如上图,有登录注册,注册点击register就可实现跳转到注册界面(因为懒,很多功能都没有去实现,如推特微信登录这些都没有去实现,),且窗口做了重定向,可以实现拖动.

完整的代码如下

 第一个文件dl.py文件

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '登陆2.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.

from PyQt5.QtWidgets import QApplication,QMainWindow,QMessageBox
import Ui_ershoufangzhujiem
from PyQt5 import QtCore, QtGui, QtWidgets
import sys,res
from dl_DataBase import *
import pymysql
import os
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(749, 600)
        self.widget_3 = QtWidgets.QWidget(Form)
        self.widget_3.setGeometry(QtCore.QRect(40, 20, 651, 541))
        self.widget_3.setMouseTracking(False)
        self.widget_3.setObjectName("widget_3")
        self.widget = QtWidgets.QWidget(self.widget_3)
        self.widget.setGeometry(QtCore.QRect(30, 10, 550, 500))
        self.widget.setStyleSheet("QPushButton#pushButton{\n"
" background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(120, 38, 26, 150), stop:1 rgba(255, 255, 255, 255));\n"
" color:rgba(255,255,255,220);\n"
" border-radius:5px;\n"
"}\n"
"QPushButton#pushButton:hover{\n"
" background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 255, 255, 255), stop:1 rgba(120, 38, 26,150));\n"
"}\n"
"QPushButton#pushButton:pressed{\n"
" padding-left:5px;\n"
" padding-top:5px;\n"
" background-color:rgba(120,38,26,255);\n"
"}\n"
"\n"
"QPushButton#pushButton_2,#pushButton_3,#pushButton_4,#pushButton_5{\n"
"  background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 255, 255, 255), stop:1 rgba(222, 190, 167,150));\n"
" color:rgba(255,255,255,220);\n"
" border-radius:5px;\n"
"}\n"
"QPushButton#pushButton_2:hover,#pushButton_3:hover,#pushButton_4:hover,#pushButton_5:hover{\n"
"background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(222, 190, 167,150), stop:1 rgba(255, 255, 255, 255));\n"
"}\n"
"\n"
"QPushButton#pushButton_2:pressed,#pushButton_3:pressed,#pushButton_4:pressed,#pushButton_5:pressed{\n"
" padding-left:5px;\n"
" padding-top:5px;\n"
" background-color:rgba(222,190,167,255);\n"
"}\n"
"")
        self.widget.setObjectName("widget")
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setGeometry(QtCore.QRect(40, 30, 280, 430))
        self.label.setStyleSheet("border-image: url(:/images/敦煌.jpeg);\n"
"border-top-left-radius:50px;")
        self.label.setText("")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.widget)
        self.label_2.setGeometry(QtCore.QRect(40, 30, 280, 430))
        self.label_2.setStyleSheet("background-color:rgba(0,0,0,80);\n"
"border-top-left-radius:50px;")
        self.label_2.setText("")
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.widget)
        self.label_3.setGeometry(QtCore.QRect(270, 30, 240, 430))
        self.label_3.setStyleSheet("background-color:rgba(255,255,255,255);\n"
"border-bottom-right-radius:50px;")
        self.label_3.setText("")
        self.label_3.setObjectName("label_3")
        self.lineEdit = QtWidgets.QLineEdit(self.widget)
        self.lineEdit.setGeometry(QtCore.QRect(295, 150, 190, 40))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.lineEdit.setFont(font)
        self.lineEdit.setStyleSheet("background-color:rgba(0,0,0,0);\n"
"border:none;\n"
"border-bottom:2px solid rgba(120,38,26,200);\n"
"color:rgba(0,0,0,240);\n"
"padding-bottom:7px;")
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.widget)
        self.lineEdit_2.setGeometry(QtCore.QRect(295, 215, 190, 40))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.lineEdit_2.setFont(font)
        self.lineEdit_2.setStyleSheet("background-color:rgba(0,0,0,0);\n"
"border:none;\n"
"border-bottom:2px solid rgba(120,38,26,200);\n"
"color:rgba(0,0,0,240);\n"
"padding-bottom:7px;")
        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setGeometry(QtCore.QRect(295, 295, 190, 40))
        self.pushButton.setObjectName("pushButton")
        self.label_5 = QtWidgets.QLabel(self.widget)
        self.label_5.setGeometry(QtCore.QRect(290, 340, 210, 20))
        font = QtGui.QFont()
        font.setPointSize(8)
        self.label_5.setFont(font)
        self.label_5.setStyleSheet("color:rgba(0,0,0,210);\n"
"")
        self.label_5.setObjectName("label_5")
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.widget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(310, 370, 160, 31))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_2.setMaximumSize(QtCore.QSize(30, 30))
        font = QtGui.QFont()
        font.setFamily("等线")
        font.setPointSize(15)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setStyleSheet("border-image: url(:/images/twitter-circle-fill.png);")
        self.pushButton_2.setText("")
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.pushButton_3 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_3.setMaximumSize(QtCore.QSize(30, 30))
        font = QtGui.QFont()
        font.setFamily("等线")
        font.setPointSize(15)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setStyleSheet("border-image: url(:/images/facebook_facebook52.png);")
        self.pushButton_3.setText("")
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)
        self.pushButton_4 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_4.setMaximumSize(QtCore.QSize(30, 30))
        font = QtGui.QFont()
        font.setFamily("等线")
        font.setPointSize(15)
        self.pushButton_4.setFont(font)
        self.pushButton_4.setStyleSheet("border-image: url(:/images/微信.png);")
        self.pushButton_4.setText("")
        self.pushButton_4.setObjectName("pushButton_4")
        self.horizontalLayout.addWidget(self.pushButton_4)
        self.pushButton_5 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_5.setMaximumSize(QtCore.QSize(30, 30))
        font = QtGui.QFont()
        font.setFamily("等线")
        font.setPointSize(15)
        self.pushButton_5.setFont(font)
        self.pushButton_5.setStyleSheet("border-image: url(:/images/QQ-circle-fill.png);")
        self.pushButton_5.setText("")
        self.pushButton_5.setObjectName("pushButton_5")
        self.horizontalLayout.addWidget(self.pushButton_5)
        self.pushButton_6 = QtWidgets.QPushButton(self.widget)
        self.pushButton_6.setGeometry(QtCore.QRect(480, 40, 20, 20))
        self.pushButton_6.setStyleSheet("background-color: rgba(255,255,255,0)")
        self.pushButton_6.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/images/叉叉.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton_6.setIcon(icon)
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_7 = QtWidgets.QPushButton(self.widget)
        self.pushButton_7.setGeometry(QtCore.QRect(450, 40, 20, 20))
        self.pushButton_7.setStyleSheet("background-color: rgba(255,255,255,0)")
        self.pushButton_7.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/images/缩小.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton_7.setIcon(icon1)
        self.pushButton_7.setObjectName("pushButton_7")
        self.pushButton_8 = QtWidgets.QPushButton(self.widget)
        self.pushButton_8.setGeometry(QtCore.QRect(320, 70, 121, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_8.setFont(font)
        self.pushButton_8.setStyleSheet("background-color: rgba(0,0,0,0)\n"
"")
        self.pushButton_8.setObjectName("pushButton_8")
        self.pushButton_9 = QtWidgets.QPushButton(self.widget)
        self.pushButton_9.setGeometry(QtCore.QRect(350, 400, 81, 23))
        font = QtGui.QFont()
        font.setFamily("Lucida Sans Typewriter")
        font.setPointSize(7)
        font.setBold(True)
        font.setItalic(True)
        font.setUnderline(True)
        font.setWeight(75)
        self.pushButton_9.setFont(font)
        self.pushButton_9.setStyleSheet("background-color: rgba(255,255,255,0);\n"
"")
        self.pushButton_9.setObjectName("pushButton_9")
        self.widget_2 = QtWidgets.QWidget(self.widget_3)
        self.widget_2.setGeometry(QtCore.QRect(250, 10, 361, 521))
        self.widget_2.setStyleSheet("QPushButton#pushButton_10{\n"
" background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(120, 38, 26, 150), stop:1 rgba(255, 255, 255, 255));\n"
" color:rgba(255,255,255,220);\n"
" border-radius:5px;\n"
"}\n"
"QPushButton#pushButton_10:hover{\n"
" background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 255, 255, 255), stop:1 rgba(120, 38, 26,150));\n"
"}\n"
"QPushButton#pushButton_10:pressed{\n"
" padding-left:5px;\n"
" padding-top:5px;\n"
" background-color:rgba(120,38,26,255);\n"
"}")
        self.widget_2.setObjectName("widget_2")
        self.label_4 = QtWidgets.QLabel(self.widget_2)
        self.label_4.setGeometry(QtCore.QRect(50, 30, 240, 430))
        self.label_4.setStyleSheet("background-color:rgba(255,255,255,255);\n"
"border-bottom-right-radius:50px;")
        self.label_4.setText("")
        self.label_4.setObjectName("label_4")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.widget_2)
        self.lineEdit_3.setGeometry(QtCore.QRect(70, 150, 190, 40))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.lineEdit_3.setFont(font)
        self.lineEdit_3.setStyleSheet("background-color:rgba(0,0,0,0);\n"
"border:none;\n"
"border-bottom:2px solid rgba(120,38,26,200);\n"
"color:rgba(0,0,0,240);\n"
"padding-bottom:7px;")
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.lineEdit_4 = QtWidgets.QLineEdit(self.widget_2)
        self.lineEdit_4.setGeometry(QtCore.QRect(70, 200, 190, 40))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.lineEdit_4.setFont(font)
        self.lineEdit_4.setStyleSheet("background-color:rgba(0,0,0,0);\n"
"border:none;\n"
"border-bottom:2px solid rgba(120,38,26,200);\n"
"color:rgba(0,0,0,240);\n"
"padding-bottom:7px;")
        self.lineEdit_4.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.lineEdit_5 = QtWidgets.QLineEdit(self.widget_2)
        self.lineEdit_5.setGeometry(QtCore.QRect(70, 300, 190, 40))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.lineEdit_5.setFont(font)
        self.lineEdit_5.setStyleSheet("background-color:rgba(0,0,0,0);\n"
"border:none;\n"
"border-bottom:2px solid rgba(120,38,26,200);\n"
"color:rgba(0,0,0,240);\n"
"padding-bottom:7px;")
        self.lineEdit_5.setObjectName("lineEdit_5")
        self.lineEdit_6 = QtWidgets.QLineEdit(self.widget_2)
        self.lineEdit_6.setGeometry(QtCore.QRect(70, 250, 190, 40))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.lineEdit_6.setFont(font)
        self.lineEdit_6.setStyleSheet("background-color:rgba(0,0,0,0);\n"
"border:none;\n"
"border-bottom:2px solid rgba(120,38,26,200);\n"
"color:rgba(0,0,0,240);\n"
"padding-bottom:7px;")
        self.lineEdit_6.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_6.setObjectName("lineEdit_6")
        self.pushButton_10 = QtWidgets.QPushButton(self.widget_2)
        self.pushButton_10.setGeometry(QtCore.QRect(70, 380, 190, 40))
        self.pushButton_10.setObjectName("pushButton_10")
        self.pushButton_11 = QtWidgets.QPushButton(self.widget_2)
        self.pushButton_11.setGeometry(QtCore.QRect(100, 70, 140, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_11.setFont(font)
        self.pushButton_11.setStyleSheet("background-color: rgba(0,0,0,0)\n"
"")
        self.pushButton_11.setObjectName("pushButton_11")
        self.pushButton_12 = QtWidgets.QPushButton(self.widget_2)
        self.pushButton_12.setGeometry(QtCore.QRect(260, 40, 20, 20))
        self.pushButton_12.setStyleSheet("background-color: rgba(255,255,255,0)")
        self.pushButton_12.setText("")
        self.pushButton_12.setIcon(icon)
        self.pushButton_12.setObjectName("pushButton_12")
        self.pushButton_13 = QtWidgets.QPushButton(self.widget_2)
        self.pushButton_13.setGeometry(QtCore.QRect(230, 40, 20, 20))
        self.pushButton_13.setStyleSheet("background-color: rgba(255,255,255,0)")
        self.pushButton_13.setText("")
        self.pushButton_13.setIcon(icon1)
        self.pushButton_13.setObjectName("pushButton_13")
        self.label_4.raise_()
        self.lineEdit_3.raise_()
        self.lineEdit_4.raise_()
        self.lineEdit_5.raise_()
        self.lineEdit_6.raise_()
        self.pushButton_10.raise_()
        self.pushButton_11.raise_()
        self.pushButton_13.raise_()
        self.pushButton_12.raise_()
        self.widget_2.raise_()
        self.widget.raise_()

        self.retranslateUi(Form)
        self.pushButton_7.clicked.connect(Form.showMinimized)
        self.pushButton_6.clicked.connect(Form.close)
        self.pushButton_9.clicked.connect(self.widget_2.raise_)
        self.pushButton_12.clicked.connect(Form.close)
        self.pushButton_10.clicked.connect(self.widget.raise_)
        self.pushButton_13.clicked.connect(Form.showMinimized)
        QtCore.QMetaObject.connectSlotsByName(Form)
        Form.setTabOrder(self.lineEdit, self.lineEdit_2)
        Form.setTabOrder(self.lineEdit_2, self.pushButton)
        Form.setTabOrder(self.pushButton, self.pushButton_9)
        Form.setTabOrder(self.pushButton_9, self.lineEdit_3)
        Form.setTabOrder(self.lineEdit_3, self.lineEdit_4)
        Form.setTabOrder(self.lineEdit_4, self.lineEdit_6)
        Form.setTabOrder(self.lineEdit_6, self.lineEdit_5)
        Form.setTabOrder(self.lineEdit_5, self.pushButton_10)
        Form.setTabOrder(self.pushButton_10, self.pushButton_8)
        Form.setTabOrder(self.pushButton_8, self.pushButton_6)
        Form.setTabOrder(self.pushButton_6, self.pushButton_11)
        Form.setTabOrder(self.pushButton_11, self.pushButton_2)
        Form.setTabOrder(self.pushButton_2, self.pushButton_3)
        Form.setTabOrder(self.pushButton_3, self.pushButton_4)
        Form.setTabOrder(self.pushButton_4, self.pushButton_5)
        Form.setTabOrder(self.pushButton_5, self.pushButton_7)
    
    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.lineEdit.setPlaceholderText(_translate("Form", "User Name"))
        self.lineEdit_2.setPlaceholderText(_translate("Form", "Password"))
        self.pushButton.setText(_translate("Form", "LOG In"))
        self.pushButton.clicked.connect(self.lg)
        self.label_5.setText(_translate("Form", "Forgot your User Name or password?"))
        self.pushButton_8.setText(_translate("Form", "LOG In"))
        self.pushButton_9.setText(_translate("Form", "register!"))
        self.lineEdit_3.setPlaceholderText(_translate("Form", "User Name"))
        self.lineEdit_4.setPlaceholderText(_translate("Form", "Password"))
        self.lineEdit_5.setPlaceholderText(_translate("Form", "E-mail"))
        self.lineEdit_6.setPlaceholderText(_translate("Form", "Reconfirm Password  "))
        self.pushButton_10.setText(_translate("Form", "Register"))
        self.pushButton_11.setText(_translate("Form", "Register"))
#连接数据库判断:
    def lg(self):
        user_name=self.lineEdit.text()
        user_passwd=self.lineEdit_2.text()
        sql="select * from user"
        user=Db_R(sql)
        for i in range(len(user)):
                if user['name'][i]==user_name and user['passwd'][i]==user_passwd:
                        self.w=Ui_ershoufangzhujiem.loginWindow()
                        m=Ui_ershoufangzhujiem.Ui_Form()
                        m.setupUi(self.w)
                        self.w.show()
                else:
                        
                        QMessageBox.critical(None,'警告','输入的用户名或密码错误',QMessageBox.Yes)

第二个文件database.py

import mysql.connector as ms    #导入链接mysql数据模块
import pandas as pd
import pymysql
pymysql.install_as_MySQLdb()
from sqlalchemy import create_engine  #写数据库
def Db_R(sql):
   db = pymysql.connect(host='localhost',    #主机名
   user='root',        #用户名
   passwd='asdfasd',        #密码
   db='www',        #数据库名称
   charset='utf8')
   cursor = db.cursor()    #创建游标
   # sql = "select * from user"    查询早已创建好的用户表
   df_sql = pd.read_sql(sql, db)
   cursor.close()    #关闭游标
   db.close()
   return df_sql
# def Db_T(df,b):

第三个main.py文件也是启动整个项目的的文件

from matplotlib.style import use
from pyparsing import dbl_slash_comment
from dl import *
import main_ershoufang
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow
from dl_DataBase import *

class loginWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui=Ui_Form()
        self.ui.setupUi(self)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.show()
    def mousePressEvent(self, event):
        if event.button()==QtCore.Qt.LeftButton and self.isMaximized()==False:
            self.m_flag=True
            self.m_Position=event.globalPos()-self.pos() #获取鼠标相对窗口的位置
            event.accept()
            self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))  #更改鼠标图标
            
    def mouseMoveEvent(self, QMouseEvent):
        if QtCore.Qt.LeftButton and self.m_flag:  
            self.move(QMouseEvent.globalPos()-self.m_Position)#更改窗口位置
            QMouseEvent.accept()
            
    def mouseReleaseEvent(self, QMouseEvent):
        self.m_flag=False
        self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))

if __name__ == "__main__":
    app=QApplication(sys.argv)
    win=loginWindow()
    sys.exit(app.exec_())

 上面就是整个登录界面的完整代码,只需要改改素材就可以,需要完整项目的我会放在文章后面

二、主界面的创建

1.首先在vsc中创建一个后缀为  名称.ui文件,然后点击edit in designer,在设计器里设计一个自己喜欢的界面(当然如果想白嫖,直接跳过看第二点:2.主界面样式

 如图1设计了一个翻译软件会在另外的一篇文章介绍):

 2.主界面样式

 这里也做了窗口的重定向显示,所以窗口可以拖动,这里的图形的数据几乎没有用到什么算法,所以需要自己去优化算法,这里只做了简单的显示

 

完整代码如下:

 第一个UI_ershoufangzhujiem.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'd:\python代码\爬虫\pyqt5作业\ershoufangzhujiem.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd   
import time
from PyQt5.QtGui import QTextCursor
from PyQt5.QtCore import QObject, pyqtSignal, QEventLoop, QTimer
from PyQt5 import QtCore, QtGui, QtWidgets
import sys,res
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from PyQt5.QtWidgets import QApplication,QMainWindow
class loginWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui=Ui_Form()
        self.ui.setupUi(self)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.show()
    def mousePressEvent(self, event):
        if event.button()==QtCore.Qt.LeftButton and self.isMaximized()==False:
            self.m_flag=True
            self.m_Position=event.globalPos()-self.pos() #获取鼠标相对窗口的位置
            event.accept()
            self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))  #更改鼠标图标
            
    def mouseMoveEvent(self, QMouseEvent):
        if QtCore.Qt.LeftButton and self.m_flag:  
            self.move(QMouseEvent.globalPos()-self.m_Position)#更改窗口位置
            QMouseEvent.accept()
            
    def mouseReleaseEvent(self, QMouseEvent):
        self.m_flag=False
        self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))

class MyFigure(FigureCanvas):
    def __init__(self, width=5, height=4, dpi=100):
            # 第一步:创建一个创建Figure
        self.fig = Figure(figsize=(width, height), dpi=dpi,facecolor='#FFFFFF',edgecolor='#FFFFFF')
            # 第二步:在父类中激活Figure窗口
        super(MyFigure, self).__init__(self.fig)  # 此句必不可少,否则不能显示图形
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(1120, 720)
        self.widget = QtWidgets.QWidget(Form)
        self.widget.setGeometry(QtCore.QRect(0, 0, 1120, 720))
        self.widget.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 255, 255, 255), stop:1 rgba(255, 255, 255, 255));")
        self.widget.setObjectName("widget")
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setGeometry(QtCore.QRect(0, 0, 1121, 51))
        self.label.setStyleSheet("border-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:1 rgba(0, 0, 0, 144));\n"
"background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:1 rgba(0, 0, 0, 144));")
        self.label.setText("")
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setGeometry(QtCore.QRect(1050, 15, 20, 20))
        self.pushButton.setStyleSheet("background-color: rgba(255,255,255,0);\n"
"border-image: url(:/images/缩小.png);\n"
"")
        self.pushButton.setText("")
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setGeometry(QtCore.QRect(1080, 15, 20, 20))
        self.pushButton_2.setStyleSheet("background-color: rgba(255,255,255,0);\n"
"border-image: url(:/images/叉叉.png);")
        self.pushButton_2.setText("")
        self.pushButton_2.setObjectName("pushButton_2")
        self.groupBox = QtWidgets.QGroupBox(self.widget)
        self.groupBox.setGeometry(QtCore.QRect(0, 70, 401, 291))
        self.groupBox.setTitle("")
        self.groupBox.setObjectName("groupBox")
        self.groupBox_2 = QtWidgets.QGroupBox(self.widget)
        self.groupBox_2.setGeometry(QtCore.QRect(420, 70, 401, 291))
        self.groupBox_2.setTitle("")
        self.groupBox_2.setObjectName("groupBox_2")
        self.groupBox_3 = QtWidgets.QGroupBox(self.widget)
        self.groupBox_3.setGeometry(QtCore.QRect(850, 60, 271, 641))
        self.groupBox_3.setTitle("")
        self.groupBox_3.setObjectName("groupBox_3")
        self.groupBox_4 = QtWidgets.QGroupBox(self.widget)
        self.groupBox_4.setGeometry(QtCore.QRect(0, 390, 821, 301))
        self.groupBox_4.setTitle("")
        self.groupBox_4.setObjectName("groupBox_4")

        self.retranslateUi(Form)
        self.pushButton_2.clicked['bool'].connect(Form.close)
        self.pushButton.clicked.connect(Form.showMinimized)
        self.ht_Tzxt()
        self.ht_zxt()
        self.ht_sdt()
        self.ht_zhexiantu()
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))

    def ht_Tzxt(self):
                matplotlib.rcParams['font.sans-serif'] = ['SimHei'] #设置字体为SimHei显示中文
                matplotlib.rcParams['axes.unicode_minus'] = False 
                data=pd.read_csv('重庆链家二手房2.csv',encoding='utf-8')

                group=data.groupby(['lj_address_2'])
                average_nx_group = group['lj_house_total_price'].min()
                x=average_nx_group.index[:10]
                y=average_nx_group.values[:10]
                title='各地最低房价'

                F = MyFigure(10,10, 70)
                
                axes = F.fig.add_subplot(111)
                axes.spines['right'].set_color('none')
                axes.spines['top'].set_color('none')
                axes.barh(x, y, color='#00FF7F')
                #  设置坐标名称
                axes.set_ylabel("均价", color='y', rotation=0)
                axes.set_xlabel("地区", color='y')
                axes.patch.set_facecolor('#ffffFF')  # 统计图自身背景颜色
                for x, y in enumerate(y):
                        axes.text(x, y + 1, y, ha='center')

                F.fig.suptitle("均价直方图", color='y')  # 标题
                
                QtWidgets.QGridLayout(self.groupBox).addWidget(F)
                self.groupBox.show()
    def ht_zxt(self):
            matplotlib.rcParams['font.sans-serif'] = ['SimHei'] #设置字体为SimHei显示中文
            matplotlib.rcParams['axes.unicode_minus'] = False 
            data=pd.read_csv('重庆链家二手房2.csv',encoding='utf-8')
            group=data.groupby(['lj_address_2'])
            average_nx_group = group['lj_house_total_price'].min()
            x=average_nx_group.index[:10]
            y=average_nx_group.values[:10]
            title='各地最低房价'
            F = MyFigure(10,10, 70)
            axes = F.fig.add_subplot(111)
            axes.spines['right'].set_color('none')
            axes.spines['top'].set_color('none')
            axes.bar(x, y, color='#00FF7F')
            #  设置坐标名称
            axes.set_ylabel("均价", color='y', rotation=0)
            axes.set_xlabel("地区", color='y')
            axes.patch.set_facecolor('#ffffFF')  # 统计图自身背景颜色
            for x, y in enumerate(y):
                    axes.text(x, y + 1, y, ha='center')

            F.fig.suptitle("均价直方图", color='y')  # 标题
            QtWidgets.QGridLayout(self.groupBox_2).addWidget(F)
            self.groupBox_2.show()   
    def ht_sdt(self):
        matplotlib.rcParams['font.sans-serif'] = ['SimHei'] #设置字体为SimHei显示中文
        matplotlib.rcParams['axes.unicode_minus'] = False 
        data=pd.read_csv('重庆链家二手房2.csv',encoding='utf-8')
        F = MyFigure(10,10, 70)
        axes = F.fig.add_subplot(111)
        axes.spines['right'].set_color('none')
        axes.spines['top'].set_color('none')
        axes.scatter(data['lj_house_nx'][:30],data['lj_address_2'][:30],color='#87CEFA')
        F.fig.suptitle("散点图", color='y')  # 标题
        QtWidgets.QGridLayout(self.groupBox_3).addWidget(F)
        self.groupBox_3.show() 
    def ht_zhexiantu(self):
        matplotlib.rcParams['font.sans-serif'] = ['SimHei'] #设置字体为SimHei显示中文
        matplotlib.rcParams['axes.unicode_minus'] = False 
        data=pd.read_csv('重庆链家二手房2.csv',encoding='utf-8')
        F = MyFigure(10,10, 70)
        axes = F.fig.add_subplot(111)
        axes.spines['right'].set_color('none')
        axes.spines['top'].set_color('none')
        axes.plot(data['lj_house_nx'][:10],data['lj_address_2'][:10],color='#87CEFA')
        F.fig.suptitle("散点图", color='y')  # 标题
        QtWidgets.QGridLayout(self.groupBox_4).addWidget(F)
        self.groupBox_4.show() 
import res

第二个man_ershoufang.py文件。

from Ui_ershoufangzhujiem import *
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow
if __name__ == "__main__":
    app=QApplication(sys.argv)
    win=loginWindow()
    sys.exit(app.exec_())

       

总结

         到了这里整个项目都完整了,从登录界面到主界面,完整代码全在,想复制粘贴使用需要修改一些文件的路径素材的路径甚至换掉有的素材,在pyqt5里有一个   .qrc的素材文件,一定要import到自己的项目中,不然会报错,我的完整的项文件放到下面的连接中,也可直接私信我。(这里要感谢一些b站的一个up主C_Konchok根据他的作品来进行创作的,大家也可以去看看)

重庆链家二手房可视化项目压缩包-Python文档类资源-CSDN文库

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值