qt加密码学软件思路01还有后续

上边已经上传

登录设计思路

#登录函数

def login(self):

username = self.lineEdit.text()

password = self.lineEdit_2.text()

# 在此处添加验证逻辑

if username == "admin" and password == "admin":

QtWidgets.QMessageBox.information(None, "登录", "登录成功!")

else:

QtWidgets.QMessageBox.warning(None, "登录", "用户名或密码错误!")

  1. 修改登录函数:在login函数中添加读取CSV文件和验证逻辑。以下是修改后的代码:
def login(self):
    username = self.lineEdit.text()
    password = self.lineEdit_2.text()

    with open('accounts.csv', 'r', newline='') as file:
        reader = csv.DictReader(file)
        for row in reader:
            if row['username'] == username and row['password'] == password:
                QtWidgets.QMessageBox.information(None, "登录", "登录成功!")
                return

    QtWidgets.QMessageBox.warning(None, "登录", "用户名或密码错误!")

这段代码打开名为accounts.csv的文件,并使用csv.DictReader来读取CSV内容。然后,它逐行检查用户名和密码是否与输入匹配。如果找到匹配项,显示登录成功的消息框并返回。如果没有找到匹配项,则显示错误消息框

PS D:\免密ui_obe> & D:/Amaconda/python.exe d:/免密ui_obe/密码学obe/denglu.py

Traceback (most recent call last):

File "d:\免密ui_obe\密码学obe\denglu.py", line 56, in login

with open('D:\免密ui_obe\密码学obe\accounts.csv', 'r', newline='') as file:

OSError: [Errno 22] Invalid argument: 'D:\\免密ui_obe\\密码学obe\x07ccounts.csv'

颜色控制

要将控件的颜色设置为粉色,您可以在样式表中使用颜色属性来实现。请尝试以下样式表代码:

setStyleSheet

self.frame.setStyleSheet("background-color: rgb(255, 192, 203);")  # 设置背景色为粉色

self.label.setStyleSheet("color: rgb(255, 192, 203);")  # 设置字体颜色为粉色

self.checkBox.setStyleSheet("color: rgb(255, 192, 203);")  # 设置字体颜色为粉色

self.checkBox_2.setStyleSheet("color: rgb(255, 192, 203);")  # 设置字体颜色为粉色

self.pushButton.setStyleSheet("background-color: rgb(255, 192, 203);")  # 设置背景色为粉色

self.lineEdit.setStyleSheet("background-color: rgb(255, 192, 203);")  # 设置背景色为粉色

self.lineEdit_2.setStyleSheet("background-color: rgb(255, 192, 203);")  # 设置背景色为粉色

将上述代码放置在setupUi方法中的适当位置,以设置相应控件的颜色为粉色。

self.right_folder_button1 = QtWidgets.QPushButton(qtawesome.icon('fa.user-circle', color='balck'), "查询")

self.right_folder_button1.setObjectName('right_search_button')

self.right_folder_button1.setStyleSheet('''QPushButton{border:none;color:black;}''')

self.right_folder_button1.setFont(qtawesome.font('fa', 20))

self.right_folder_button1.clicked.connect(self.view_data111)

self.right_folder_button1.setFixedSize(110, 30) # 设置按钮大小

self.right_folder_button1.setStyleSheet(

"QPushButton{color:highlight}"

"QPushButton:hover{color:white}"

"QPushButton{background-color:rgb(0,191,255)}"

"QPushButton{border:2px}"

"QPushButton{border-radius:10px}"

"QPushButton{padding:5px 6px}"

"QPushButton{font-size:14pt}")

导入数据

#导入数据库
def right_folder_button_clicked51(self):
    try:
        file = open("8.txt", 'w').close()
        ap = demo.right_bar_widget_folder_input9.text()
        if ap == '':
            QMessageBox.information(self, '错误', '输入不能为空', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
        else:
            book = xlrd.open_workbook(ap)
            sheet = book.sheet_by_index(0)
            # 建立一个MySQL连接
            conn = pymysql.connect(
                host='localhost',
                user='root',
                passwd='@hdp020280',
                db='警务人员管控表',
                charset='utf8'
            )
            # 获得游标
            cur = conn.cursor()
            # 创建插入SQL语句
            query = 'insert into student(学号,姓名,专业,班级,高级程序语言,python编程,数据库原理,数据结构与算法,数学分析,高等数学,网络爬虫,数据可视化,数据挖掘,数据分析) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'
            # 创建一个for循环迭代读取xls文件每行数据的, 从第二行开始是要跳过标题行
            for r in range(0, sheet.nrows):
                学号 = sheet.cell(r, 0).value
                姓名 = sheet.cell(r, 1).value
                专业 = sheet.cell(r, 2).value
                班级 = sheet.cell(r, 3).value
                高级程序语言 = sheet.cell(r, 4).value
                python编程 = sheet.cell(r, 5).value
                数据库原理 = sheet.cell(r, 6).value
                数据结构与算法 = sheet.cell(r, 7).value
                数学分析 = sheet.cell(r, 8).value
                高等数学 = sheet.cell(r, 9).value
                网络爬虫 = sheet.cell(r, 10).value
                数据可视化 = sheet.cell(r, 11).value
                数据挖掘 = sheet.cell(r, 12).value
                数据分析 = sheet.cell(r, 13).value



                #8.txt是存储学号和姓名的
                with open('8.txt', 'a') as f3:
                    f3.write(sheet.cell(r, 0).value + " " + sheet.cell(r, 1).value+"\n")
                values = (学号, 姓名, 专业, 班级, 高级程序语言, python编程, 数据库原理, 数据结构与算法, 数学分析, 高等数学, 网络爬虫, 数据可视化, 数据挖掘, 数据分析)
                # 执行sql语句
                cur.execute(query, values)
            cur.close()
            conn.commit()
            conn.close()
            QMessageBox.information(self, '成功', '导入成功', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
    except:
        QMessageBox.information(self, '错误', '导入失败', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)

这段代码是一个用于导入数据库的函数。它的作用是读取一个Excel文件并将数据插入到MySQL数据库中。

首先,函数会尝试打开一个名为"8.txt"的文件,并清空其内容。

接下来,它获取用户在界面上输入的文件路径,并使用xlrd库打开该Excel文件。然后,通过指定索引值为0,获取Excel文件的第一个表格(sheet)。

sheet = book.sheet_by_index(0)

之后,代码建立一个与MySQL数据库的连接,使用pymysql库提供的`connect()`函数,并传入数据库的相关信息,如主机名(host)、用户名(user)、密码(passwd)、数据库名(db)和字符集(charset)等。

接下来,通过调用`cursor()`方法创建一个游标对象,该对象用于执行SQL语句。

然后,代码定义了一个插入SQL语句的字符串变量`query`,其中包含了插入语句的结构和占位符。

在一个for循环中,代码迭代读取Excel文件的每一行数据,从第二行开始(跳过标题行)。然后,它使用`sheet.cell()`方法获取单元格的值,并将这些值赋给相应的变量,如学号、姓名、专业等。

在每次迭代中,代码将学号和姓名写入到"8.txt"文件中,然后将所有变量的值组成一个元组`values`。

#8.txt是存储学号和姓名的

with open('8.txt', 'a') as f3:

f3.write(sheet.cell(r, 0).value + " " + sheet.cell(r, 1).value+"\n")

接下来,代码执行SQL语句,使用游标对象的`execute()`方法,传入插入语句和值的元组。

循环结束后,代码关闭游标对象,并使用连接对象的`commit()`方法提交事务,然后关闭数据库连接。

最后,根据导入的结果,使用`QMessageBox.information()`方法显示相应的提示框,提示导入是否成功。

如果出现任何异常,代码会捕获异常,并显示导入失败的提示框。

需要注意的是,该代码存在一些潜在的问题和安全隐患,比如没有对用户输入进行验证和过滤,没有异常处理的具体信息等,建议在使用之前进行相关的优化和改进。

展示数据

#信息查询中查询全部信息
def view_data(self):
    try:
        global db
        db = QtSql.QSqlDatabase.addDatabase('QMYSQL')
        db.setHostName('localhost')
        db.setDatabaseName('student')
        db.setUserName('root')
        db.setPassword('@hdp020820')
        if not db.open():  # 判断数据库是否打开
            print(db.lastError().text())  # 打印操作数据库时出现的错误
            return False
        else:
            print("连接成功")
    except:
        pass

这段代码是一个用于查询全部信息的函数。它使用了QtSql模块来连接MySQL数据库,并查询数据库中的全部数据。

首先,函数定义了一个全局变量`db`,用于存储数据库连接对象。

然后,通过调用`QtSql.QSqlDatabase.addDatabase()`方法创建一个数据库连接对象,并指定数据库类型为MySQL。

接下来,通过设置数据库连接对象的相关属性,如主机名(setHostName)、数据库名(setDatabaseName)、用户名(setUserName)和密码(setPassword),来配置数据库连接信息。

在代码中,主机名设置为'localhost',数据库名设置为'student',用户名设置为'root',密码设置为'@hdp020820'。你可以根据实际情况进行修改。

然后,代码使用`db.open()`方法来尝试打开数据库连接。如果连接成功,将打印"连接成功"的消息;如果连接失败,将打印操作数据库时出现的错误信息,并返回False。

最后,代码使用try-except块来捕获任何可能的异常,如果出现异常,则通过`pass`语句进行忽略。

需要注意的是,该代码中的数据库连接信息是硬编码在代码中的,建议将敏感信息存储在安全的位置,并通过配置文件或其他方式进行读取。另外,代码中只是进行了数据库连接的操作,还需要进一步的代码来执行查询操作并获取查询结果。

你可以根据具体需求,在函数中添加相应的代码来执行查询操作,并处理查询结果。

加密解密

self.jiami = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.jiami.setObjectName("jiami")
        self.verticalLayout.addWidget(self.jiami)
        self.jiemi = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.jiemi.setObjectName("jiemi")

qt与windows平台的驱动

qt加密码学软件思路01还有后续_第1张图片

导入图片窗口

class ImgWindow():  # 显示图片的窗口
    def __init__(self):
        super().__init__()
        # 使用ui文件导入定义界面类
        self.ui = QUiLoader().load('img_window.ui')
        self.ui.Button_exit.clicked.connect(self.exit_b)  #
        global_ms.ms.connect(self.load_img)  # 连接信号与槽


    def exit_b(self):
        os.remove("temp.png")  # 删除生成的临时文件
        self.ui.close()


    def load_img(self, object):
        im = Image.open(object)  # 这里把原来的jpg转化成png之后打开
        im.save('temp.png')
        pixmap = QtGui.QPixmap('temp.png')
        label = self.ui.img_label
        label.setPixmap(pixmap)  # 加载图片
        label.setScaledContents(True)  # 自适应

thinker常用控件和属性

qt加密码学软件思路01还有后续_第2张图片

控件属性

全部教程

https://www.cnblogs.com/xuhongfei/p/14023230.html

qt加密码学软件思路01还有后续_第3张图片

红酒质量检测

plt.figure(figsize = (8,3))

plt.subplot(121)

plt.hist(df['total acid'], bins = 50, color = color[0])

plt.xlabel('total acid')

plt.ylabel('Frequency')

plt.subplot(122)

plt.hist(np.log(df['total acid']), bins = 50 , color = color[0])

plt.xlabel('log(total acid)')

plt.ylabel('Frequency')

plt.tight_layout()

print("Figure 5: Total Acid Histogram")

虚假信息识别

设置背景图片

超详细且简单的Qt Designer设置界面背景图_qtdesigner改dialog背景_府学路18号车神的博客-CSDN博客

qt加密码学软件思路01还有后续_第4张图片

你可能感兴趣的:(密码学,客户,python,开发语言)