#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
import PySide2
import os
import time
import xlrd
import MySQLdb
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QTextEdit, QApplication
说明="说明:n1.最多可增加100个库,每个库最多100个表,100字段。n2.初始数据库密码为aa1234567。n3.输入路径时一定不可以手动输入,要从目录中选择。n4.增删文件后需等到窗口关闭后才能继续操作,否则容易卡。n6.若新存入表名字与旧表冲突,则会覆盖原来的表。"
'''最多100个库
访问数据库后抛出错误
提交后重新读取数据库
植入表返回判断,若不存在退出
'''
''''''
Database=[0 for i in range(100)]
CurrentDatabase=0
Column=[0 for i in range(100)]
Table=[0 for i in range(100)]
CurrentTable='--请选择表格--'
CurrentTableCreateNew='--请选择表格--'
CurrentDatabaseCreateNew='--请选择库--'
CurrentDatabaseDelete='--请选择库--'
CurrentTableDelete='--请选择表格--'
CurrentDatabaseChoose='--请选择库--'
CurrentTableChoose='--请选择表格--'
#w=0
密码="aa1234567"
def 输出矩阵结果(矩阵):
print(len(矩阵))
global w,Column
输出语句="**************************************************查询字段结果**************************************************n"
i=0
print(Column)
for item in Column:
if item!=0:
输出语句=输出语句+"("+str(i)+")"+item#"n"
i=i+1
print(i)
输出语句=输出语句+"n"
for j in range(0,len(矩阵)):
for s in range(0,i):
输出语句=输出语句+"("+str(s)+")"+矩阵[j][s]#"n"
输出语句=输出语句+"n"
输出语句=输出语句+ "查询到数据"+str(len(矩阵))+ "条n"
输出语句=输出语句+"****************************************************************************************************************n"
输出任意语句(输出语句)
def 输出任意语句(输出语句):
global w
w.text_edit.append(输出语句)
#w.text_edit.setText(输出语句)
def 查询库():
global 密码
db = MySQLdb.connect("localhost", "root", 密码, charset='utf8' )
#db = MySQLdb.connect("localhost", "root", "aa1234567", "电子工程学院研究生2021级", charset='utf8' )
cursor = db.cursor()
cursor.execute("show databases")
db.commit()
data = cursor.fetchall()
m=[]
for i in range(0,len(data)):
if data[i][0]!='information_schema' and data[i][0]!='performance_schema'and data[i][0]!='mysql'and data[i][0]!='sys':
m.append(data[i][0])
print(m)
db.close()
return m
# 关闭数据库连接
def 查询表或字段(库,执行语句):
global 密码
db = MySQLdb.connect("localhost", "root", 密码,库, charset='utf8' )
#db = MySQLdb.connect("localhost", "root", "aa1234567", "电子工程学院研究生2021级", charset='utf8' )
cursor = db.cursor()
cursor.execute(执行语句)
db.commit()
data = cursor.fetchall()
print(data)
db.close()
return data
def ShowDatabase():
global Database
global 密码
# 打开数据库连接
try:
db = MySQLdb.connect("localhost", "root", 密码, charset='utf8' )
except MySQLdb.Error as e:
输出任意语句(str(e))
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句
cursor.execute("show databases")
# 使用 fetchone() 方法获取一条数据
data = cursor.fetchall()
print(data)
# 关闭数据库连接
print(len(data))
m=0
Database=[0 for i in range(100)]
for i in range(0,len(data)):
if data[i][0]!='information_schema' and data[i][0]!='performance_schema'and data[i][0]!='mysql'and data[i][0]!='sys':
Database[m]=data[i]
m=m+1
db.close()
def 退出(self):
self.close()
def ShowTable(Database):
global Table
global 密码
db = MySQLdb.connect("localhost", "root", 密码,Database, charset='utf8' )
cursor = db.cursor()
cursor.execute("show tables")
data = cursor.fetchall()
print(data)
Table=[0 for i in range(100)]
for i in range(0,len(data)):
Table[i]=data[i]
db.close()
def ShowColumn(Database,Table):
global Column
global 密码
db = MySQLdb.connect("localhost", "root", 密码,Database ,charset='utf8' )
cursor = db.cursor()
aa="show full columns from "+"`"+Table+"`"
cursor.execute(aa)
data = cursor.fetchall()
Column=[0 for i in range(100)]
for i in range(0,len(data)):
Column[i]=data[i][0]
db.close()
def 删除库(库):
global 密码
db = MySQLdb.connect("localhost", "root", 密码, charset='utf8' )
cursor = db.cursor()
aa="drop database if exists "+"`"+库+"`"
cursor.execute(aa)
data = cursor.fetchall()
print(data)
# 关闭数据库连接
db.close()
time.sleep(2)
def 删除表(库,表):
global 密码
db = MySQLdb.connect("localhost", "root",密码, 库,charset='utf8' )
cursor = db.cursor()
aa="drop table if exists "+"`"+表+"`"
cursor.execute(aa)
data = cursor.fetchall()
print(data)
# 关闭数据库连接
db.close()
time.sleep(2)
def 创建库(库):
global 密码
db = MySQLdb.connect("localhost", "root",密码, charset='utf8' )
cursor = db.cursor()
print(库)
aa="CREATE DATABASE IF NOT EXISTS "+"`"+库+"`"
cursor.execute(aa)
data = cursor.fetchall()
print(data)
# 关闭数据库连接
db.close()
time.sleep(2)
def 创建表(文件路径,database):
global 密码
表名=文件路径.split("/")[-1][:-5]
readbook = xlrd.open_workbook(文件路径)#抓取错误
sheet = readbook.sheet_by_index(0)
删除表(database,表名)
db = MySQLdb.connect("localhost", "root", 密码,database , charset='utf8' )
#捕捉错误
cursor = db.cursor()
aa="CREATE TABLE IF NOT EXISTS "+"`"+表名+"`("
for i in range(0,sheet.ncols-1):
aa=aa+"`"+str(sheet.cell(0, i).value)+"`"+" VARCHAr(200),"
aa=aa+"`"+str(sheet.cell(0, sheet.ncols-1).value)+"`"+" VARCHAr(200)"
aa=aa+")ENGINE=InnoDB DEFAULT CHARSET=utf8"
print(aa)
cursor.execute(aa)
data = cursor.fetchall()
print(data)
#返回判断,若不存在退出
cc="insert into "+"`"+表名+"` ("
for i in range(0,sheet.ncols-1):
cc=cc+"`"+str(sheet.cell(0, i).value)+"`,"
cc=cc+"`"+str(sheet.cell(0, sheet.ncols-1).value)+"`) values ("
for j in range(1,sheet.nrows):
mm=cc
for i in range(0,sheet.ncols-1):
mm=mm+"'"+str(sheet.cell(j, i).value)+"',"
mm=mm+"'"+str(sheet.cell(j, sheet.ncols-1).value)+"')"
print(mm)
#time.sleep(0.8)
cursor = db.cursor()
cursor.execute(mm)
db.commit()
data = cursor.fetchall()
print(data)
db.close()
import sys
try:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QTextEdit, QApplication
except ImportError:
from PySide2.QtGui import QIntValidator, QDoubleValidator, QRegExpValidator
from PySide2.QtCore import QRegExp
import PySide2.QtWidgets
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QComboBox ,QTextEdit,QFrame,QPlainTextEdit,QFileDialog, QApplication,QWidget,QMessageBox, QDesktopWidget,QPushButton, QHBoxLayout, QVBoxLayout, QLabel, QLineEdit
class ChildWindow0(QFrame,QWidget):
def __init__(self):
super(ChildWindow0, self).__init__()
global Database
global Table
self.setWindowTitle("增删数据")
self.fra = QFrame(self)
self.fra.resize(500,220)
#self.fra.setStyleSheet("background-color:green")
self.fra.setLineWidth(7) #设置外线宽度
self.fra.setMidLineWidth(5) #设置中线宽度
self.fra.setFrameShadow(QFrame.Raised) #设置阴影效果:凸起
self.fra.setFrameShape(QFrame.Panel)
self.Label= QLabel("新建表格", self)
self.Label.move(18,18)
self.ButtonChooseFile=QPushButton("浏览", self)
self.ButtonChooseFile.clicked.connect(self.open_fileManager)
self.ButtonChooseFile.move(400,60)
self.catalog = QComboBox(self)
self.catalog.addItem('--请选择库--')
for item in Database:
if item!=0:
self.catalog.addItem(item[0])
self.catalog.addItem('新建库')
self.catalog.setGeometry(18, 102, 160, 24)
self.catalog.currentIndexChanged.connect(self.catalogChanged)
#self.catalog1 = QComboBox(self)
self.LeftPlainTextEdit = QLineEdit(self) #在主对话框上创建一个纯文本编辑框控件
self.LeftPlainTextEdit.setPlaceholderText("请不要直接输入路径而是选择路径(文件名将作为为表名)") #设置空内容时的提示文本
self.LeftPlainTextEdit.resize(360, 24) #设置大小
self.LeftPlainTextEdit.move(18, 60)
self.LeftPlainTextEdit1 = QLineEdit(self) #在主对话框上创建一个纯文本编辑框控件
self.LeftPlainTextEdit1.setPlaceholderText("请输入库名") #设置空内容时的提示文本
self.LeftPlainTextEdit1.resize(160, 24) #设置大小
self.LeftPlainTextEdit1.move(200, 102)
self.LeftPlainTextEdit1.setVisible(False)
self.LeftPlainTextEdit2 = QLineEdit(self) #在主对话框上创建一个纯文本编辑框控件
self.LeftPlainTextEdit2.setPlaceholderText("请输入插入xlsx文件行数") #设置空内容时的提示文本
self.LeftPlainTextEdit2.resize(160, 24) #设置大小
self.LeftPlainTextEdit2.move(18, 144)
self.LeftPlainTextEdit2.setVisible(False)
self.LeftPlainTextEdit3 = QLineEdit(self) #在主对话框上创建一个纯文本编辑框控件
self.LeftPlainTextEdit3.setPlaceholderText("请输入插入xlsx文件列数") #设置空内容时的提示文本
self.LeftPlainTextEdit3.resize(160, 24) #设置大小
self.LeftPlainTextEdit3.move(200, 144)
self.LeftPlainTextEdit3.setVisible(False)
self.ButtonCreat=QPushButton("新建表格", self)
self.ButtonCreat.clicked.connect(self.新建表格)
self.ButtonCreat.move(400,102)
reg = QRegExp('[0-9]{1,7}')
validator = QRegExpValidator()
validator.setRegExp(reg)
self.LeftPlainTextEdit2.setValidator(validator)
self.LeftPlainTextEdit3.setValidator(validator)
regEx =QRegExp("^D.*$ ")
#regEx =QRegExp("\D{1,60}")
validator1 = QRegExpValidator()
validator1.setRegExp(regEx)
self.LeftPlainTextEdit1.setValidator(validator1)
#self.setContentsMargins(0, 0, 400, 240)
self.fra1 = QFrame(self)
self.fra1.resize(500,180)
#self.fra.setStyleSheet("background-color:green")
self.fra1.setLineWidth(7) #设置外线宽度
self.fra1.setMidLineWidth(5) #设置中线宽度
self.fra1.setFrameShadow(QFrame.Raised) #设置阴影效果:凸起
self.fra1.setFrameShape(QFrame.Panel)
self.fra1.move(0,220)
self.Label= QLabel("删除库或表格", self)
self.Label.move(18,238)
self.catalog1 = QComboBox(self)
self.catalog1.addItem('--请选择库--')
for item in Database:
if item!=0:
self.catalog1.addItem(item[0])
self.catalog1.setGeometry(18, 280, 160, 24)
self.catalog2 = QComboBox(self)
self.catalog2.addItem('--请选择表格--')
self.catalog2.setGeometry(18, 322, 160, 24)
self.catalog2.currentIndexChanged.connect(self.catalogChanged3)
self.catalog1.currentIndexChanged.connect(self.catalogChanged1)
self.DeletKu=QPushButton("删除库", self)
self.DeletKu.clicked.connect(self.删除库按钮)
self.DeletKu.move(400,280)
self.DeletKu=QPushButton("删除表", self)
self.DeletKu.clicked.connect(self.删除表按钮)
self.DeletKu.move(400,322)
#self.setStyleSheet("border:1px solid %s" % 0x0fff)
#self.setStyleSheet("background-color: %s" % 0x0fff)
#引入子窗口类
#self.show()
def catalogChanged(self):
global Table,CurrentDatabaseCreateNew
cat = self.catalog.currentText()
self.LeftPlainTextEdit1.setVisible(False)
if cat == '新建库':
self.LeftPlainTextEdit1.setVisible(True)
elif cat =='--请选择库--':
pass
else:
pass
CurrentDatabaseCreateNew=cat
def catalogChanged1(self):
global Table,CurrentDatabaseDelete
cat = self.catalog1.currentText()
if cat =='--请选择库--':
self.catalog2.clear()
self.catalog2.addItem('--请选择表格--')
else:
ShowTable(cat)
self.catalog2.clear()
self.catalog2.addItem('--请选择表格--')
for item in Table:
if item!=0:
self.catalog2.addItem(item[0])
CurrentDatabaseDelete=cat
def catalogChanged3(self):
global CurrentTableDelete
cat = self.catalog2.currentText()
CurrentTableDelete=cat
print(cat)
def 删除库按钮(self):
global CurrentDatabaseDelete
choice = QMessageBox.question(self, '确认', '您确认要删除该库?')
if choice == QMessageBox.Yes:
print('确定')
if CurrentDatabaseDelete=='--请选择库--':
print("还未选择库!")
else:
删除库(CurrentDatabaseDelete)
退出(self)
elif choice == QMessageBox.No:
print('取消')
def 删除表按钮(self):
global CurrentDatabaseDelete,CurrentTableDelete
choice = QMessageBox.question(self, '确认', '您确认要删除该表格?')
if choice == QMessageBox.Yes:
print('确定')
if CurrentTableDelete=='--请选择表格--':
print("还未选择表格!")
else:
删除表(CurrentDatabaseDelete,CurrentTableDelete)
退出(self)
elif choice == QMessageBox.No:
print('取消')
def 新建表格(self):
global Table,CurrentDatabaseCreateNew
choice = QMessageBox.question(self, '确认', '您确认要创建表?')
if choice == QMessageBox.Yes:
print('确定')
行数=self.LeftPlainTextEdit2.text()
列数=self.LeftPlainTextEdit3.text()
文件路径=self.LeftPlainTextEdit.text()
if 0:#行数=="0" or 行数==""or 列数=="0" or 列数=="":
print("行数或列数必须为非空")
else:
if 文件路径 =="":
print("未选择文件!")
else:
if CurrentDatabaseCreateNew=='--请选择库--':
print("未选择库!")
else :
if CurrentDatabaseCreateNew=='新建库':
aa=self.LeftPlainTextEdit1.text()
if aa=="":
print("未填入库!")
else:
创建库(aa)
创建表(文件路径,aa)
退出(self)
else:
库=CurrentDatabaseCreateNew
创建表(文件路径,CurrentDatabaseCreateNew)
退出(self)
elif choice == QMessageBox.No:
print('取消')
def open_fileManager(self):
filePath, _ = QFileDialog.getOpenFileName(
self, # 父窗口对象
"选择你要上传的文件", # 标题
r"d:\", # 起始目录
"xlsx类型 (*.xlsx)" # 选择类型过滤项,过滤内容在括号中
)
self.LeftPlainTextEdit.setText(filePath)
class ChildWindow1(QFrame,QWidget):
def __init__(self):
super(ChildWindow1, self).__init__()
global Database
self.setWindowTitle("查询")
self.fra1 = QFrame(self)
self.fra1.resize(500,180)
#self.fra.setStyleSheet("background-color:green")
self.fra1.setLineWidth(7) #设置外线宽度
self.fra1.setMidLineWidth(5) #设置中线宽度
self.fra1.setFrameShadow(QFrame.Raised) #设置阴影效果:凸起
self.fra1.setFrameShape(QFrame.Panel)
self.Label= QLabel("选择库和表", self)
self.Label.move(18,18)
self.catalog = QComboBox(self)
self.catalog.addItem('--请选择表格--')
self.catalog.setGeometry(18, 102, 160, 24)
self.catalog.currentIndexChanged.connect(self.catalogChanged5)
self.catalog4 = QComboBox(self)
self.catalog4.addItem('--请选择库--')
for item in Database:
if item!=0:
self.catalog4.addItem(item[0])
self.catalog4.setGeometry(18, 60, 160, 24)
self.catalog4.currentIndexChanged.connect(self.catalogChanged2)
#self.catalog1 = QComboBox(self)
#self.setContentsMargins(0, 0, 400, 240)
self.fra = QFrame(self)
self.fra.resize(500,220)
#self.fra.setStyleSheet("background-color:green")
self.fra.setLineWidth(7) #设置外线宽度
self.fra.setMidLineWidth(5) #设置中线宽度
self.fra.setFrameShadow(QFrame.Raised) #设置阴影效果:凸起
self.fra.setFrameShape(QFrame.Panel)
self.fra.move(0,180)
self.Label1= QLabel("选择字段", self)
self.Label1.move(18,196)
self.catalog0= QComboBox(self)
self.catalog0.addItem('--请选择字段1--')
self.catalog0.setGeometry(18, 236, 160, 24)
self.catalog1 = QComboBox(self)
self.catalog1.addItem('--请选择字段2--')
self.catalog1.setGeometry(18, 280, 160, 24)
self.catalog2 = QComboBox(self)
self.catalog2.addItem('--请选择字段3--')
self.catalog2.setGeometry(18, 322, 160, 24)
#self.catalog2.currentIndexChanged.connect(self.catalogChanged)
self.LeftPlainTextEdit1 = QLineEdit(self) #在主对话框上创建一个纯文本编辑框控件
self.LeftPlainTextEdit1.setPlaceholderText("请输入字段内容1") #设置空内容时的提示文本
self.LeftPlainTextEdit1.resize(160, 24) #设置大小
self.LeftPlainTextEdit1.move(200, 236)
self.LeftPlainTextEdit2 = QLineEdit(self) #在主对话框上创建一个纯文本编辑框控件
self.LeftPlainTextEdit2.setPlaceholderText("请输入字段内容2") #设置空内容时的提示文本
self.LeftPlainTextEdit2.resize(160, 24) #设置大小
self.LeftPlainTextEdit2.move(200, 280)
self.LeftPlainTextEdit3 = QLineEdit(self) #在主对话框上创建一个纯文本编辑框控件
self.LeftPlainTextEdit3.setPlaceholderText("请输入字段内容3") #设置空内容时的提示文本
self.LeftPlainTextEdit3.resize(160, 24) #设置大小
self.LeftPlainTextEdit3.move(200, 322)
self.DeletKu=QPushButton("查询", self)
self.DeletKu.clicked.connect(self.查询)
self.DeletKu.move(400,322)
#self.setStyleSheet("border:1px solid %s" % 0x0fff)
#self.setStyleSheet("background-color: %s" % 0x0fff)
#引入子窗口类
#self.show()
def 查询(self):
#choice = QMessageBox.question(self, '确认', '您确认要执行该操作?')
库=self.catalog4.currentText()
表=self.catalog.currentText()
if 表=='--请选择表格--'and 库=='--请选择库--':
查询结果=查询库()
输出语句="***********查询库结果***********n"
for h in 查询结果:
输出语句=输出语句+h+"n"
输出语句=输出语句+ "********************************n"
输出任意语句(输出语句)
else:
if 表=='--请选择表格--':
执行语句="show tables"
查询结果=查询表或字段(库,执行语句)#查询有哪些表
输出语句="***********查询表结果***********n"
for h in 查询结果:
输出语句=输出语句+h[0]+"n"
输出语句=输出语句+ "********************************n"
输出任意语句(输出语句)
else:
if self.catalog0.currentText()=='--请选择字段1--':
字段1=0
else:
字段1=self.catalog0.currentText()
if self.catalog1.currentText()=='--请选择字段2--':
字段2=0
else:
字段2=self.catalog1.currentText()
if self.catalog2.currentText()=='--请选择字段3--':
字段3=0
else:
字段3=self.catalog2.currentText()
if 字段1==0 and 字段2==0 and 字段3==0 :
执行语句="select * from "+"`"+表+"`"#查表的所有内容
print(执行语句)
查询结果=查询表或字段(库,执行语句)
输出矩阵结果(查询结果)
else :
执行语句="select * from "+"`"+表+"`"+" where "
if 字段1!=0 and 字段2!=0 and 字段3!=0 :
执行语句=执行语句+"`"+字段1+"`="+"'"+self.LeftPlainTextEdit1.text()+"'"+" and "+"`"+字段2+"`="+"'"+self.LeftPlainTextEdit2.text()+"'"+" and "+"`"+字段3+"`="+"'"+self.LeftPlainTextEdit3.text()+"'"
查询结果=查询表或字段(库,执行语句)
输出矩阵结果(查询结果)
return
if 字段1!=0 and 字段2!=0 :
执行语句=执行语句+"`"+字段1+"`="+"'"+self.LeftPlainTextEdit1.text()+"'"+" and "+"`"+字段2+"`="+"'"+self.LeftPlainTextEdit2.text()+"'"
查询结果=查询表或字段(库,执行语句)
输出矩阵结果(查询结果)
return
if 字段2!=0 and 字段3!=0 :
执行语句=执行语句+"`"+字段2+"`="+"'"+self.LeftPlainTextEdit2.text()+"'"+" and "+"`"+字段3+"`="+"'"+self.LeftPlainTextEdit3.text()+"'"
查询结果=查询表或字段(库,执行语句)
输出矩阵结果(查询结果)
return
if 字段1!=0 and 字段3!=0 :
执行语句=执行语句+"`"+字段1+"`="+"'"+self.LeftPlainTextEdit1.text()+"'"+" and "+"`"+字段3+"`="+"'"+self.LeftPlainTextEdit3.text()+"'"
查询结果=查询表或字段(库,执行语句)
输出矩阵结果(查询结果)
return
if 字段1!=0:
执行语句=执行语句+"`"+字段1+"`="+"'"+self.LeftPlainTextEdit1.text()+"'"
查询结果=查询表或字段(库,执行语句)
输出矩阵结果(查询结果)
return
if 字段2!=0:
执行语句=执行语句+"`"+字段2+"`="+"'"+self.LeftPlainTextEdit2.text()+"'"
查询结果=查询表或字段(库,执行语句)
输出矩阵结果(查询结果)
return
if 字段3!=0:
执行语句=执行语句+"`"+字段3+"`="+"'"+self.LeftPlainTextEdit3.text()+"'"
查询结果=查询表或字段(库,执行语句)
输出矩阵结果(查询结果)
return
def catalogChanged2(self):
global Table,CurrentDatabaseChoose
self.catalog.currentIndexChanged.connect(self.catalogChanged0)
cat = self.catalog4.currentText()
if cat =='--请选择库--':
self.catalog.clear()
self.catalog.addItem('--请选择表格--')
else:
ShowTable(cat)
self.catalog.clear()
self.catalog.addItem('--请选择表格--')
for item in Table:
if item!=0:
self.catalog.addItem(item[0])
CurrentDatabaseChoose=cat
self.catalog.currentIndexChanged.connect(self.catalogChanged5)
def catalogChanged0(self):
pass
def catalogChanged5(self):
global CurrentDatabaseChoose, CurrentTableChoose,Column
cat = self.catalog.currentText()
CurrentTableChoose=cat
if cat =='--请选择表格--' or cat == "":
self.catalog0.clear()
self.catalog0.addItem('--请选择字段1--')
self.catalog1.clear()
self.catalog1.addItem('--请选择字段2--')
self.catalog2.clear()
self.catalog2.addItem('--请选择字段3--')
else:
ShowColumn(CurrentDatabaseChoose,CurrentTableChoose)
self.catalog0.clear()
self.catalog0.addItem('--请选择字段1--')
self.catalog1.clear()
self.catalog1.addItem('--请选择字段2--')
self.catalog2.clear()
self.catalog2.addItem('--请选择字段3--')
for item in Column:
if item!=0:
self.catalog0.addItem(item)
self.catalog1.addItem(item)
self.catalog2.addItem(item)
def open_fileManager(self):
filePath, _ = QFileDialog.getOpenFileName(
self, # 父窗口对象
"选择你要上传的文件", # 标题
r"d:\", # 起始目录
"xlsx类型 (*.xlsx)" # 选择类型过滤项,过滤内容在括号中
)
self.LeftPlainTextEdit.setText(filePath)
class ChildWindow2(QFrame,QWidget):
def __init__(self):
super(ChildWindow2, self).__init__()
global Database, 说明
self.Label= QLabel(说明, self)
self.Label.move(18,18)
self.setWindowTitle("设置")
self.fra = QFrame(self)
self.fra.resize(500,400)
#self.fra.setStyleSheet("background-color:green")
self.fra.setLineWidth(7) #设置外线宽度
self.fra.setMidLineWidth(5) #设置中线宽度
self.fra.setFrameShadow(QFrame.Raised) #设置阴影效果:凸起
self.fra.setFrameShape(QFrame.Panel)
self.LeftPlainTextEdit3 = QLineEdit(self) #在主对话框上创建一个纯文本编辑框控件
self.LeftPlainTextEdit3.setPlaceholderText("请输入连接数据库密码") #设置空内容时的提示文本
self.LeftPlainTextEdit3.resize(320, 24) #设置大小
self.LeftPlainTextEdit3.move(18, 322)
self.DeletKu=QPushButton("确认更改", self)
self.DeletKu.clicked.connect(self.确认更改)
self.DeletKu.move(400,322)
#self.setStyleSheet("border:1px solid %s" % 0x0fff)
#self.setStyleSheet("background-color: %s" % 0x0fff)
#引入子窗口类
#self.show()
def 确认更改(self):
global 密码
密码=self.LeftPlainTextEdit3.text()
QMessageBox.information(self, "更改成功!","更改成功!",
QMessageBox.Ok)
class TextEditWidget(QWidget):
text_edit = None
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 垂直布局
v_box = QVBoxLayout()
# 建议
suggest_box = QHBoxLayout()
self.text_edit = QTextEdit()
self.text_edit.setPlaceholderText("mysql查询结果")
suggest_box.addWidget(QLabel("主页"))
suggest_box.addWidget(self.text_edit)
suggest_box.setStretch(1, 1)
v_box.addLayout(suggest_box)
# 复制、粘贴、清空和提交按钮
button_box = QHBoxLayout()
copy_btn = QPushButton("查询")
copy_btn.clicked.connect(self.childShowFun1)
paste_btn = QPushButton("增删数据")
paste_btn.clicked.connect(self.childShowFun0)
clear_btn = QPushButton("清空")
clear_btn.clicked.connect(self.clear)
submit_btn = QPushButton("设置")
submit_btn.clicked.connect(self.childShowFun2)
button_box.addWidget(copy_btn)
button_box.addWidget(paste_btn)
button_box.addWidget(submit_btn)
button_box.addWidget(clear_btn)
button_box.addWidget(QLabel(), 1)
button_box.setContentsMargins(40, 0, 0, 0)
v_box.addLayout(button_box)
self.setLayout(v_box)
# 调整窗口大小
self.resize(900, 500)
# 窗口居中
self.center()
# 窗口标题
self.setWindowTitle("数据库统计软件")
# 显示窗口
self.show()
def childShowFun0(self):
#注意,这里的childwindow不能定义成临时变量,必须定义成主窗口类MainWindow的成员变量,如果是临时变量,即前面没有self,那么子窗口只会闪一下,就会消失
ShowDatabase()
self.childwindow1 = ChildWindow0()
self.childwindow1.show()
def childShowFun1(self):
#注意,这里的childwindow不能定义成临时变量,必须定义成主窗口类MainWindow的成员变量,如果是临时变量,即前面没有self,那么子窗口只会闪一下,就会消失
ShowDatabase()
self.childwindow1 = ChildWindow1()
self.childwindow1.show()
def childShowFun2(self):
#注意,这里的childwindow不能定义成临时变量,必须定义成主窗口类MainWindow的成员变量,如果是临时变量,即前面没有self,那么子窗口只会闪一下,就会消失
ShowDatabase()
self.childwindow1 = ChildWindow2()
self.childwindow1.show()
# 拷贝
def copy(self):
text = self.text_edit.toPlainText()
# 剪切板的文本
clipboard = QApplication.clipboard()
clipboard.setText(text)
# 粘贴
def paste(self):
# 剪切板的文本
clipboard = QApplication.clipboard()
# 以Html的格式输出多行文本框,字体红色,字号6号
self.text_edit.setHtml(clipboard.text())
# 清空
def clear(self):
self.text_edit.clear()
# 提交
def submit(self):
text = self.text_edit.toPlainText()
if text.strip() == "":
self.text_edit.setFocus()
QMessageBox.warning(self, "内容为空",
"建议空空如也,请输入你的宝贵意见",
QMessageBox.Ok)
else:
QMessageBox.information(self, "提交成功",
"你的宝贵意见,我们收到了,谢谢你",
QMessageBox.Ok)
# 实现居中
def center(self):
f = self.frameGeometry()
c = QDesktopWidget().availableGeometry().center()
f.moveCenter(c)
self.move(f.topLeft())
if __name__ == "__main__":
app = QApplication(sys.argv)
w = TextEditWidget()
sys.exit(app.exec_())
数据库以xlsx的格式插入,若字段没有选择,则会查询相应的库或表



