一.用户表格的创建
打开 Opengauss 虚拟机,启动 opengauss 数据库,以管理员身份运行 Data Studio,连接上 Opengauss 虚拟机,连接上 school 数据库,选中 school 数据库,鼠标右键,打开新的终端,输入如下 SQL 语言创建:用户表。
create table Userinformation(Uname varchar(50), Upassword varchar(50) not null, Primary key (Uname))
二.登录对话框的创建
选择“工具”→“External Tools”→“QtDesigner”启动designer,关闭当前窗口,点击“新建”,创建新的窗口,并将左上角的菜单删掉,如下图所示:
随后保存该窗口,命名为login.ui:
二.登录界面的绘制
1.在designer中,选择Lable,Line Edit,PushButton这三个控件,将其拖入当前窗口,如下图所示:
2.双击label和button控件编辑其内容,然后修改控件文本的至合适的大小:
3.接下来在对象查看器中,双击修改控件对象变量名称,将lineEdit,lineEdit_2修改为user,和password,3个Pushbutton修改为button1,button2,button3。方便我们接下来在程序中调用这些控件。
4.选中password,可以看到它对应的是第二行的输入栏,由于是输入密码,我们需要对其属性就行修改,让其不可见,在对象查看器下面的属性编辑器中,找到echoMode选项:
更改其属性为password,这样密码在输入是就不是直接可见的了:
二.界面的导入与关闭按钮的实现
返回Pycharm,在Status类中导入新建的login.ui,并添加关闭按键响应函数。将下列代码放入Status类的构造函数中,然后加入关闭登录窗口的类函数close_login_window:
self.login = QUiLoader().load('G:\\CODE\\2019213061\\login.ui')
self.login.button3.clicked.connect(self.close_login_window)
def close_login_window(self):#关闭窗口
self.login.close()
cur.close()
conn.close()
如下图所示:(要注意缩进)
然后在下面的执行程序中,将status.ui.show(),改为status.login.show(),这样程序执行时就可以看到登录界面。
执行结果:
这个时候是没法进入主界面的,因为并没有显示ui的代码,因此我们需要添加一个登录函数,在密码正确时,关闭login窗口进入主窗口ui。
三.登录按键与注册按键的实现
与上述同理,先加入登录按键和注册按键的事件函数,再加入相应的登录函数,在构造函数下加入如下代码,然后加入对应的类函数Sign_in与Register:
def Sign_in(self):
user = self.login.user.text() # 获取输入框的内容
password = self.login.password.text()
val = (user, password)
cur.execute('select * from userinformation where uname = %s and upassword = %s;', val)
result = cur.fetchall() # 获取所有结果
conn.commit()
if result == []:
QMessageBox.about(self.login,'提示','密码错误或用户不存在')
else:
QMessageBox.about(self.login, '提示', '登录成功')
self.login.close()
self.ui.show()
def Register(self):
user = self.login.user.text() # 获取输入框的内容
password = self.login.password.text()
cur.execute(f'select * from userinformation where uname = \'%s\' ;'%(user))
result = cur.fetchall() # 获取所有结果
conn.commit()
val = (user,password)
if result != []:
QMessageBox.about(self.login, '提示', '用户已存在')
else:
cur.execute("insert into userinformation VALUES (%s,%s);", val)
conn.commit()
QMessageBox.about(self.login, '提示', '注册成功')
(1)关于登录函数,先获取当前输入框内容,然后用SQL语句在userinformation中查找是否有对应的值,如果存在,则返回对应的值,如果不存在,则返回空列表“[]”借此判断是否存在该用户,如果用户存在,密码正确则,关闭login显示主窗口ui。
(2)关于注册函数,先获取当前输入框内容,然后用SQL语句在userinformation中查找是否有对应的值,如果存在的话则提示已有用户存在,如果返回空列表,则证明用户不存在,将输入框的用户名与密码写入数据库。
添加后效果如下:
运行当前程序:
注册:
登录:
随后会进入主窗口:
四.生成exe执行文件:
在终端输入下述代码 :
pyinstaller Opengauss_GUI.py --noconsole --hidden-import PySide2.QtXml
运行完成后会在项目目录生成dist文件夹,在里面可以找到我们生成的exe文件。