pyqt5ç»å½çé¢è®¾è®¡ââ模仿qqç»å½çé¢
- ââä¸ãç®åæç¨çå¯ç´æ¥ç»å½ççé¢ââè´¦å·å¯ç ç¨åºåæ»ââ
- ââ1.1ãææå¾ï¼ââ
- ââ1.2ãè§é¢ææå¾ââ
- ââ3ã代ç 说æââ
- ââ4ã使ç¨ç¤ºä¾ââ
- ââ5ãå ¨é¨æºç è§ï¼ââ
- ââäºã带æ°æ®åºçå¯ç»å½æ³¨åââ
- ââææå¾ââ
ä»å¤©ç»å¤§å®¶å享ä¸ä¸ªååä¸éçpyqt5å®ç°çç»å½çé¢ï¼å¾åqqçç»å½çé¢ï¼ä½ å¯ä»¥å°æ¤ç»å½çé¢ç¨å°èªå·±ç项ç®ä¸ï¼çè³å®å ¨ä¸ç¨ä¿®æ¹ï¼åªéå¨èªå·±é¡¹ç®ä¸è¿è¡è¯¥pyæ件å³å¯ï¼å¨è¾å ¥æ£ç¡®çè´¦å·åå¯ç åï¼å°±å¯ä»¥è¿å ¥çèªå·±ç主çé¢ã
ä¸ãç®åæç¨çå¯ç´æ¥ç»å½ççé¢ââè´¦å·å¯ç ç¨åºåæ»
1.1ãææå¾ï¼
1.2ãè§é¢ææå¾
ââ西çè§é¢ââpyqt5å®ç°ç»å½çé¢ââ
3ã代ç 说æ
é¦å æå¼å§ï¼æ们èªå·±ç¨ä»£ç ç¼åäºä¸ä¸ªæ é¢æ ï¼ç¨äºç¾åæ们çç»å½çé¢ï¼ä½æ¯è¿ä¸ªåä½ ä¸»çé¢ç并æ å ³ç³»ãå¨ä»£ç 190è¡ç¬¬è½½å ¥äºä¸å¼ å¾çï¼è¿ä¸ªå¾çä½ å¯ä»¥éææ¹åã
palette1.setBrush(self.backgroundRole(), QtGui.QBrush(
QtGui.QPixmap('log0.jpg'))) # 设置ç»å½èæ¯å¾ç
ç¶åå¨536è¡ï¼æ们å¯ä»¥è°æ´ç»å½çé¢å¤§å°ã
.setFixedSize(QSize(650,500)) #å 为è¿éåºå®äºå¤§å°ï¼æ以çªå£ç大å°æ²¡æåæ³ä»»æè°æ´ï¼æ³è¦ä½¿resizeWidgetå½æ°çæçè¯è¦æè¿éå»æï¼èªå·±è°èå¸å±åçªå£å¤§å°
å¨511è¡ on_pushButton_enter_clickedå½æ°ä¸ï¼å®ç°äºä¸ä¸ªè´¦å·åå¯ç å¤æçå½æ°ï¼å¦æè¾å ¥æ£ç¡®ï¼åéæ¯ç»å½çé¢ï¼login_main.pyå½æ°è¿è¡ç»æï¼å¯ä»¥è¿å ¥å°ä½ ç主çé¢ãè¿éçè´¦å·ååå¯ç ä½ å¯ä»¥é便æ¹å¨
4ã使ç¨ç¤ºä¾
åå¦æçå主çé¢å½æ°å¦ä¸ï¼
= QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
æ³å å ¥ç»å½çé¢ï¼åªéè¦å¨ç¬¬äºè¡ç´æ¥æå ¥
os.system('python login_main.py') #æ§è¡login_main.pyæ件
å³
= QtWidgets.QApplication(sys.argv)
os.system('python login_main.py') #æ§è¡login_main.pyæ件ï¼å³ç»å½çé¢
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
å°±å¯ä»¥å®ç°ï¼ç»å½çé¢ï¼å¨è¾å ¥æ£ç¡®çè´¦å·åå¯ç åï¼å°±å¯ä»¥è°å°ä¸»çé¢ã
5ãå ¨é¨æºç è§ï¼
ââç»å½çé¢æºä»£ç ââ
äºã带æ°æ®åºçå¯ç»å½æ³¨å
ææå¾
'''**************************************************************************
çæ¬ï¼1.0
å
容ï¼ç»å½æ³¨åæé®
æ¶é´ï¼2022.5.29
ä½è
ï¼çäº
å建ä¸ä¸ªæ°çæ°æ®åº
create database test_0529;
使ç¨test_0505æ°æ®åº
use test_0529;
å建ä¸ä¸ªuserinfo表
create table userinfo (id int auto_increment primary key,name varchar(10) not null, pwd varchar(18) not null );
æ¥ç表ç»ææ¯å¦æ£ç¡®
desc userinfo;
æ¥çæ°æ®
select * from userinfo;
ç¶åè¿å»ï¼æ³¨åï¼è¿åç»å½ï¼ç»å½
***************************************************************************'''
import pymysql
from PyQt5.QtCore import Qt, pyqtSignal, QPoint
from PyQt5.QtGui import QFont, QEnterEvent, QPainter, QColor, QPen
from PyQt5.QtWidgets import QHBoxLayout, QLabel,QSpacerItem, QSizePolicy
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTextEdit
from PyQt5 import QtGui
import sys
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QComboBox
from PyQt5.QtWidgets import QGridLayout
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QLabel
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTextEdit
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5 import QtGui
from PyQt5.QtGui import QFont
StyleSheet = """
/*æå°åæ大åå
³éæé®éç¨é»è®¤èæ¯*/
#buttonMinimum,#buttonMaximum,#buttonClose {
border: none;
}
#buttonClose,#buttonMaximum,#buttonMinimum{
color:grey;
}
/*æ¬å*/
#buttonMinimum:hover,#buttonMaximum:hover {
color: white;
}
#buttonClose:hover {
color: white;
}
/*é¼ æ æä¸ä¸æ¾*/
#buttonMinimum:pressed,#buttonMaximum:pressed {
color:grey;
}
#buttonClose:pressed {
color: white;
}
"""
class TitleBar(QWidget):
# çªå£æå°åä¿¡å·
windowMinimumed = pyqtSignal()
# çªå£æ大åä¿¡å·
windowMaximumed = pyqtSignal()
# çªå£è¿åä¿¡å·
windowNormaled = pyqtSignal()
# çªå£å
³éä¿¡å·
windowClosed = pyqtSignal()
# çªå£ç§»å¨
windowMoved = pyqtSignal(QPoint)
def __init__(self, *args, **kwargs):
super(TitleBar, self).__init__(*args, **kwargs)
self.setStyleSheet(StyleSheet)
self.mPos = None
self.iconSize = 20 # å¾æ çé»è®¤å¤§å°
# å¸å±
layout = QHBoxLayout(self, spacing=0)
layout.setContentsMargins(0, 0, 0, 0)
# çªå£å¾æ
self.iconLabel = QLabel(self)
# self.iconLabel.setScaledContents(True)
layout.addWidget(self.iconLabel)
# çªå£æ é¢
self.titleLabel = QLabel(self)
self.titleLabel.setStyleSheet("color:grey")
self.titleLabel.setMargin(2)
layout.addWidget(self.titleLabel)
# ä¸é´ä¼¸ç¼©æ¡
layout.addSpacerItem(QSpacerItem(
40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
# å©ç¨Webdingsåä½æ¥æ¾ç¤ºå¾æ
font = self.font() or QFont()
font.setFamily('Webdings')
# æå°åæé®
self.buttonMinimum = QPushButton(
'0', self, clicked=self.windowMinimumed.emit, font=font, objectName='buttonMinimum')
layout.addWidget(self.buttonMinimum)
# æ大å/è¿åæé®
self.buttonMaximum = QPushButton(
'1', self, clicked=self.showMaximized, font=font, objectName='buttonMaximum')
layout.addWidget(self.buttonMaximum)
# å
³éæé®
self.buttonClose = QPushButton(
'r', self, clicked=self.windowClosed.emit, font=font, objectName='buttonClose')
layout.addWidget(self.buttonClose)
# åå§é«åº¦
self.setHeight()
def showMaximized(self):
if self.buttonMaximum.text() == '1':
# æ大å
self.buttonMaximum.setText('2')
self.windowMaximumed.emit()
else: # è¿å
self.buttonMaximum.setText('1')
self.windowNormaled.emit()
def setHeight(self, height=38):
"""设置æ é¢æ é«åº¦"""
self.setMinimumHeight(height)
self.setMaximumHeight(height)
# 设置å³è¾¹æé®ç大å°
self.buttonMinimum.setMinimumSize(height, height)
self.buttonMinimum.setMaximumSize(height, height)
self.buttonMaximum.setMinimumSize(height, height)
self.buttonMaximum.setMaximumSize(height, height)
self.buttonClose.setMinimumSize(height, height)
self.buttonClose.setMaximumSize(height, height)
def setTitle(self, title):
"""设置æ é¢"""
self.titleLabel.setText(title)
def setIcon(self, icon):
"""设置å¾æ """
self.iconLabel.setPixmap(icon.pixmap(self.iconSize, self.iconSize))
def setIconSize(self, size):
"""设置å¾æ 大å°"""
self.iconSize = size
def enterEvent(self, event):
self.setCursor(Qt.ArrowCursor)
super(TitleBar, self).enterEvent(event)
def mouseDoubleClickEvent(self, event):
super(TitleBar, self).mouseDoubleClickEvent(event)
self.showMaximized()
def mousePressEvent(self, event):
"""é¼ æ ç¹å»äºä»¶"""
if event.button() == Qt.LeftButton:
self.mPos = event.pos()
event.accept()
def mouseReleaseEvent(self, event):
'''é¼ æ 弹起äºä»¶'''
self.mPos = None
event.accept()
def mouseMoveEvent(self, event):
if event.buttons() == Qt.LeftButton and self.mPos:
self.windowMoved.emit(self.mapToGlobal(event.pos() - self.mPos))
event.accept()
# æ举左ä¸å³ä¸ä»¥åå个å®ç¹
Left, Top, Right, Bottom, LeftTop, RightTop, LeftBottom, RightBottom = range(8)
class FramelessWindow(QWidget):
# åå¨è¾¹è·
Margins = 5
def __init__(self, *args, **kwargs):
super(FramelessWindow, self).__init__(*args, **kwargs)
palette1 = QtGui.QPalette()
palette1.setBrush(self.backgroundRole(), QtGui.QBrush(
QtGui.QPixmap('./input/log0.jpg'))) # 设置ç»å½èæ¯å¾ç
self.setPalette(palette1)
self.setAutoFillBackground(True)
self.setGeometry(300, 300, 250, 150)
self._pressed = False
self.Direction = None
# æ è¾¹æ¡
self.setWindowFlags(Qt.FramelessWindowHint) # éèè¾¹æ¡
# é¼ æ è·è¸ª
self.setMouseTracking(True)
# å¸å±
layout = QVBoxLayout(self, spacing=0)
layout.setContentsMargins(0,0,0,0)
# æ é¢æ
self.titleBar = TitleBar(self)
layout.addWidget(self.titleBar)
# ä¿¡å·æ§½
self.titleBar.windowMinimumed.connect(self.showMinimized)
self.titleBar.windowMaximumed.connect(self.showMaximized)
self.titleBar.windowNormaled.connect(self.showNormal)
self.titleBar.windowClosed.connect(self.close)
self.titleBar.windowMoved.connect(self.move)
self.windowTitleChanged.connect(self.titleBar.setTitle)
self.windowIconChanged.connect(self.titleBar.setIcon)
#def setTitleBarHeight(self, height=38):
def setTitleBarHeight(self, height=50):
"""设置æ é¢æ é«åº¦"""
self.titleBar.setHeight(height)
def setIconSize(self, size):
"""设置å¾æ ç大å°"""
self.titleBar.setIconSize(size)
def setWidget(self, widget):
"""设置èªå·±çæ§ä»¶"""
if hasattr(self, '_widget'):
return
self._widget = widget
# 设置é»è®¤èæ¯é¢è²,å¦åç±äºåå°ç¶çªå£çå½±å导è´éæ
self._widget.setAutoFillBackground(True)
self._widget.installEventFilter(self)
self.layout().addWidget(self._widget)
def move(self, pos):
if self.windowState() == Qt.WindowMaximized or self.windowState() == Qt.WindowFullScreen:
# æ大åæè
å
¨å±åä¸å
许移å¨
return
super(FramelessWindow, self).move(pos)
def showMaximized(self):
"""æ大å,è¦å»é¤ä¸ä¸å·¦å³è¾¹ç,å¦æä¸å»é¤åè¾¹æ¡å°æ¹ä¼æ空é"""
super(FramelessWindow, self).showMaximized()
self.layout().setContentsMargins(0, 0, 0, 0)
def showNormal(self):
"""è¿å,è¦ä¿çä¸ä¸å·¦å³è¾¹ç,å¦å没æè¾¹æ¡æ æ³è°æ´"""
super(FramelessWindow, self).showNormal()
self.layout().setContentsMargins(0, 0, 0, 0)
def eventFilter(self, obj, event):
"""äºä»¶è¿æ»¤å¨,ç¨äºè§£å³é¼ æ è¿å
¥å
¶å®æ§ä»¶åè¿å为æ åé¼ æ æ ·å¼"""
if isinstance(event, QEnterEvent):
self.setCursor(Qt.ArrowCursor)
return super(FramelessWindow, self).eventFilter(obj, event)
def paintEvent(self, event):
"""ç±äºæ¯å
¨éæèæ¯çªå£,éç»äºä»¶ä¸ç»å¶éæ度为1çé¾ä»¥åç°çè¾¹æ¡,ç¨äºè°æ´çªå£å¤§å°"""
super(FramelessWindow, self).paintEvent(event)
painter = QPainter(self)
painter.setPen(QPen(QColor(255, 255, 255, 1), 2 * self.Margins))
painter.drawRect(self.rect())
def mousePressEvent(self, event):
"""é¼ æ ç¹å»äºä»¶"""
super(FramelessWindow, self).mousePressEvent(event)
if event.button() == Qt.LeftButton:
self._mpos = event.pos()
self._pressed = True
def mouseReleaseEvent(self, event):
'''é¼ æ 弹起äºä»¶'''
super(FramelessWindow, self).mouseReleaseEvent(event)
self._pressed = False
self.Direction = None
def mouseMoveEvent(self, event):
"""é¼ æ 移å¨äºä»¶"""
super(FramelessWindow, self).mouseMoveEvent(event)
pos = event.pos()
xPos, yPos = pos.x(), pos.y()
wm, hm = self.width() - self.Margins, self.height() - self.Margins
if self.isMaximized() or self.isFullScreen():
self.Direction = None
self.setCursor(Qt.ArrowCursor)
return
if event.buttons() == Qt.LeftButton and self._pressed:
self._resizeWidget(pos)
return
if xPos <= self.Margins and yPos <= self.Margins:
# å·¦ä¸è§
self.Direction = LeftTop
self.setCursor(Qt.SizeFDiagCursor)
elif wm <= xPos <= self.width() and hm <= yPos <= self.height():
# å³ä¸è§
self.Direction = RightBottom
self.setCursor(Qt.SizeFDiagCursor)
elif wm <= xPos and yPos <= self.Margins:
# å³ä¸è§
self.Direction = RightTop
self.setCursor(Qt.SizeBDiagCursor)
elif xPos <= self.Margins and hm <= yPos:
# å·¦ä¸è§
self.Direction = LeftBottom
self.setCursor(Qt.SizeBDiagCursor)
elif 0 <= xPos <= self.Margins and self.Margins <= yPos <= hm:
# 左边
self.Direction = Left
self.setCursor(Qt.SizeHorCursor)
elif wm <= xPos <= self.width() and self.Margins <= yPos <= hm:
# å³è¾¹
self.Direction = Right
self.setCursor(Qt.SizeHorCursor)
elif self.Margins <= xPos <= wm and 0 <= yPos <= self.Margins:
# ä¸é¢
self.Direction = Top
self.setCursor(Qt.SizeVerCursor)
elif self.Margins <= xPos <= wm and hm <= yPos <= self.height():
# ä¸é¢
self.Direction = Bottom
self.setCursor(Qt.SizeVerCursor)
def _resizeWidget(self, pos):
"""è°æ´çªå£å¤§å°"""
if self.Direction == None:
return
mpos = pos - self._mpos
xPos, yPos = mpos.x(), mpos.y()
geometry = self.geometry()
x, y, w, h = geometry.x(), geometry.y(), geometry.width(), geometry.height()
if self.Direction == LeftTop: # å·¦ä¸è§
if w - xPos > self.minimumWidth():
x += xPos
w -= xPos
if h - yPos > self.minimumHeight():
y += yPos
h -= yPos
elif self.Direction == RightBottom: # å³ä¸è§
if w + xPos > self.minimumWidth():
w += xPos
self._mpos = pos
if h + yPos > self.minimumHeight():
h += yPos
self._mpos = pos
elif self.Direction == RightTop: # å³ä¸è§
if h - yPos > self.minimumHeight():
y += yPos
h -= yPos
if w + xPos > self.minimumWidth():
w += xPos
self._mpos.setX(pos.x())
elif self.Direction == LeftBottom: # å·¦ä¸è§
if w - xPos > self.minimumWidth():
x += xPos
w -= xPos
if h + yPos > self.minimumHeight():
h += yPos
self._mpos.setY(pos.y())
elif self.Direction == Left: # 左边
if w - xPos > self.minimumWidth():
x += xPos
w -= xPos
else:
return
elif self.Direction == Right: # å³è¾¹
if w + xPos > self.minimumWidth():
w += xPos
self._mpos = pos
else:
return
elif self.Direction == Top: # ä¸é¢
if h - yPos > self.minimumHeight():
y += yPos
h -= yPos
else:
return
elif self.Direction == Bottom: # ä¸é¢
if h + yPos > self.minimumHeight():
h += yPos
self._mpos = pos
else:
return
self.setGeometry(x, y, w, h)
StyleSheet_2 = """
QComboBox{
height: 20px;
border-radius: 4px;
border: 1px solid rgb(111, 156, 207);
background: white;
}
QComboBox:enabled{
color: grey;
}
QComboBox:!enabled {
color: rgb(80, 80, 80);
}
QComboBox:enabled:hover, QComboBox:enabled:focus {
color: rgb(51, 51, 51);
}
QComboBox::drop-down {
background: transparent;
}
QComboBox::drop-down:hover {
background: lightgrey;
}
QComboBox QAbstractItemView {
border: 1px solid rgb(111, 156, 207);
background: white;
outline: none;
}
QLineEdit {
border-radius: 4px;
height: 20px;
border: 1px solid rgb(111, 156, 207);
background: white;
}
QLineEdit:enabled {
color: rgb(84, 84, 84);
}
QLineEdit:enabled:hover, QLineEdit:enabled:focus {
color: rgb(51, 51, 51);
}
QLineEdit:!enabled {
color: rgb(80, 80, 80);
}
""" #QComoboxåQLineEditeçæ ·å¼
StyleSheet_btn = """
QPushButton{
height:30px;
background-color: transparent;
color: grey;
border: 2px solid #555555;
border-radius: 6px;
}
QPushButton:hover {
background-color: blue;
border-radius: 6px;
}
""" #ç»å½Buttonçæ ·å¼
class loginWnd(QWidget):
'''ç»å½çªå£'''
def __init__(self, *args, **kwargs):
super(loginWnd, self).__init__()
self._layout = QVBoxLayout(spacing=0)
self._layout.setContentsMargins(0, 0, 0, 0)
self.setAutoFillBackground(True)
self.setWindowOpacity(0.9)#éæ度
self.setLayout(self._layout)
self._setup_ui()
def _setup_ui(self):
self.main_layout = QGridLayout()
self.main_layout.setAlignment(Qt.AlignCenter)
name_label = QLabel('è´¦å·ï¼')
name_label.setStyleSheet("color:black;")#设置é¢è²
name_label.setFont(QFont("SimSun", 13, 50))#设置åä½åå¤§å° ç¬¬ä¸ä¸ªåæ°æ¯åä½ï¼å¾®è½¯é
é»ï¼ï¼ç¬¬äºä¸ªæ¯åä½å¤§å°ï¼ç¬¬ä¸ä¸ªæ¯å ç²ï¼50代表æ£å¸¸ï¼
passwd_label = QLabel('å¯ç ï¼')
passwd_label.setStyleSheet("color:black;")
passwd_label.setFont(QFont("SimSun", 13, 50))
# self.name_box = QComboBox()
# self.name_box.setEditable(True)
self.name_box = QLineEdit()
#self.name_box.setEchoMode(QLineEdit.Password)
#self.name_box.setEditable(True)
self.passwd_box = QLineEdit()
self.passwd_box.setEchoMode(QLineEdit.Password)
self.name_box.setStyleSheet(StyleSheet_2)
self.passwd_box.setStyleSheet(StyleSheet_2)
label = QLabel()
login_btn = QPushButton("ç»å½")
login_btn.setStyleSheet(StyleSheet_btn)
login_btn.setStyleSheet("color:red;")
login_btn.setFont(QFont("Microsoft YaHei", 15, 50))
self.main_layout.addWidget(name_label,0,0,1,1) #åæ ï¼0ï¼0ï¼çç»ä»¶å ç¨ä¸è¡ä¸å
self.main_layout.addWidget(passwd_label,1,0,1,1)
self.main_layout.addWidget(self.name_box,0,1,1,2)
self.main_layout.addWidget(self.passwd_box,1,1,1, 2)
self.main_layout.addWidget(label,3,0,1,3)
self.main_layout.addWidget(login_btn,4,0,1,3)
self._layout.addLayout(self.main_layout)
regist_btn = QPushButton("注å")
regist_btn.setStyleSheet(StyleSheet_btn)
regist_btn.setStyleSheet("color:red;")
regist_btn.setFont(QFont("Microsoft YaHei", 15, 50))
self.main_layout.addWidget(name_label, 0, 0, 1, 1) # åæ ï¼0ï¼0ï¼çç»ä»¶å ç¨ä¸è¡ä¸å
self.main_layout.addWidget(passwd_label, 1, 0, 1, 1)
self.main_layout.addWidget(self.name_box, 0, 1, 1, 2)
self.main_layout.addWidget(self.passwd_box, 1, 1, 1, 2)
self.main_layout.addWidget(label, 3, 0, 1, 3)
self.main_layout.addWidget(regist_btn, 5, 0, 1, 3)
self._layout.addLayout(self.main_layout)
###### ç»å®æé®äºä»¶
login_btn.clicked.connect(self.on_pushButton_enter_clicked)
regist_btn.clicked.connect(self.on_pushButton_regist_clicked)
def on_pushButton_regist_clicked(self, text):
print("è¿å
¥æ³¨åçé¢")
mainWnd.hide() # å
³éç»éçé¢ï¼å¨è¿ä¹åå°±å¯ä»¥è¿å
¥ä½ ç¼åçå
¶ä»çé¢äº
mainWnd2.show()
def on_pushButton_enter_clicked(self, text):
print("è¿å
¥è´¦å·å¤æå½æ°")
db = pymysql.connect(host='localhost', user='root', password='root', charset='utf8mb4', db='test_0529')
#è¿éè¦æåå¨æ°æ®åºä¸æ°å»ºç¸å
³çè¡¨æ ¼
# 使ç¨cursor()æ¹æ³è·åæä½æ¸¸æ
cursor = db.cursor()
# SQL æ¥è¯¢è¯å¥
cursor.execute("SELECT * FROM userinfo")
# 使ç¨fetall()è·åå
¨é¨æ°æ®
data = cursor.fetchall()
# æå°è·åå°çæ°æ®
for i in range(len(data)):
print(data[i][1])
print(data[i][2])
if self.name_box.text() == data[i][1]:
print("è´¦å·æ£ç¡®")
if self.passwd_box.text() == data[i][2]:
print("å¯ç æ£ç¡®")
mainWnd.close() # å
³éç»éçé¢ï¼å¨è¿ä¹åå°±å¯ä»¥è¿å
¥ä½ ç¼åçå
¶ä»çé¢äºã
cursor.close()
db.close()
class regist(QWidget):
'''ç»å½çªå£'''
def __init__(self, *args, **kwargs):
super(regist, self).__init__()
self._layout = QVBoxLayout(spacing=0)
self._layout.setContentsMargins(0, 0, 0, 0)
self.setAutoFillBackground(True)
self.setWindowOpacity(0.9)#éæ度
self.setLayout(self._layout)
self._setup_ui()
def _setup_ui(self):
self.main_layout = QGridLayout()
self.main_layout.setAlignment(Qt.AlignCenter)
name_label = QLabel('è´¦å·ï¼')
name_label.setStyleSheet("color:black;")#设置é¢è²
name_label.setFont(QFont("SimSun", 13, 50))#设置åä½åå¤§å° ç¬¬ä¸ä¸ªåæ°æ¯åä½ï¼å¾®è½¯é
é»ï¼ï¼ç¬¬äºä¸ªæ¯åä½å¤§å°ï¼ç¬¬ä¸ä¸ªæ¯å ç²ï¼50代表æ£å¸¸ï¼
passwd_label = QLabel('å¯ç ï¼')
passwd_label.setStyleSheet("color:black;")
passwd_label.setFont(QFont("SimSun", 13, 50))
# self.name_box = QComboBox()
# self.name_box.setEditable(True)
self.name_box = QLineEdit()
#self.name_box.setEchoMode(QLineEdit.Password)
#self.name_box.setEditable(True)
self.passwd_box = QLineEdit()
self.passwd_box.setEchoMode(QLineEdit.Password)
self.name_box.setStyleSheet(StyleSheet_2)
self.passwd_box.setStyleSheet(StyleSheet_2)
label = QLabel()
login_btn = QPushButton("确认æ交")
login_btn.setStyleSheet(StyleSheet_btn)
login_btn.setStyleSheet("color:red;")
login_btn.setFont(QFont("Microsoft YaHei", 15, 50))
self.main_layout.addWidget(name_label,0,0,1,1) #åæ ï¼0ï¼0ï¼çç»ä»¶å ç¨ä¸è¡ä¸å
self.main_layout.addWidget(passwd_label,1,0,1,1)
self.main_layout.addWidget(self.name_box,0,1,1,2)
self.main_layout.addWidget(self.passwd_box,1,1,1, 2)
self.main_layout.addWidget(label,3,0,1,3)
self.main_layout.addWidget(login_btn,4,0,1,3)
self._layout.addLayout(self.main_layout)
###### ç»å®æé®äºä»¶
regist_btn = QPushButton("è¿åç»å½")
regist_btn.setStyleSheet(StyleSheet_btn)
regist_btn.setStyleSheet("color:red;")
regist_btn.setFont(QFont("Microsoft YaHei", 15, 50))
self.main_layout.addWidget(name_label, 0, 0, 1, 1) # åæ ï¼0ï¼0ï¼çç»ä»¶å ç¨ä¸è¡ä¸å
self.main_layout.addWidget(passwd_label, 1, 0, 1, 1)
self.main_layout.addWidget(self.name_box, 0, 1, 1, 2)
self.main_layout.addWidget(self.passwd_box, 1, 1, 1, 2)
self.main_layout.addWidget(label, 3, 0, 1, 3)
self.main_layout.addWidget(regist_btn, 5, 0, 1, 3)
self._layout.addLayout(self.main_layout)
###### ç»å®æé®äºä»¶
login_btn.clicked.connect(self.on_pushButton_tijiao_clicked)
regist_btn.clicked.connect(self.on_pushButton_fanhui_clicked)
def on_pushButton_fanhui_clicked(self, text):
print("è¿å
¥ç»å½çé¢")
mainWnd2.hide() # å
³éç»éçé¢ï¼å¨è¿ä¹åå°±å¯ä»¥è¿å
¥ä½ ç¼åçå
¶ä»çé¢äº
mainWnd.show()
def on_pushButton_regist_clicked(self, text):
print("è¿å
¥æ³¨åçé¢")
mainWnd.hide() # å
³éç»éçé¢ï¼å¨è¿ä¹åå°±å¯ä»¥è¿å
¥ä½ ç¼åçå
¶ä»çé¢äº
mainWnd2.show()
def on_pushButton_tijiao_clicked(self, text):
config = {
"host": "localhost",
"user": "root",
"password": "root",
"database": "test_0529"
}
db = pymysql.connect(**config)
cursor = db.cursor()
name=str(self.name_box.text())
password=str(self.passwd_box.text())
book_num=0
if name!='null':
sql = "insert into userinfo values({}, '{}', '{}');".format(book_num,name,password)
cursor.execute(sql)
db.commit() # æ交æ°æ®
cursor.close()
db.close()
print("注åæå")
def on_pushButton_enter_clicked(self, text):
print("è¿å
¥è´¦å·å¤æå½æ°")
db = pymysql.connect(host='localhost', user='root', password='root', charset='utf8mb4', db='test_0529')
#è¿éè¦æåå¨æ°æ®åºä¸æ°å»ºç¸å
³çè¡¨æ ¼
# 使ç¨cursor()æ¹æ³è·åæä½æ¸¸æ
cursor = db.cursor()
# SQL æ¥è¯¢è¯å¥
cursor.execute("SELECT * FROM userinfo")
# 使ç¨fetall()è·åå
¨é¨æ°æ®
data = cursor.fetchall()
# æå°è·åå°çæ°æ®
for i in range(len(data)):
#print(data[i][1])
#print(data[i][2])
if self.name_box.text() == data[i][1]:
print("è´¦å·æ£ç¡®")
if self.passwd_box.text() == data[i][2]:
print("å¯ç æ£ç¡®")
mainWnd.close() # å
³éç»éçé¢ï¼å¨è¿ä¹åå°±å¯ä»¥è¿å
¥ä½ ç¼åçå
¶ä»çé¢äºã
cursor.close()
db.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWnd = FramelessWindow()
mainWnd.setWindowTitle('ç»å½')
mainWnd.setWindowIcon(QIcon('Qt.ico'))
mainWnd.setFixedSize(QSize(650,500)) #å 为è¿éåºå®äºå¤§å°ï¼æ以çªå£ç大å°æ²¡æåæ³ä»»æè°æ´ï¼æ³è¦ä½¿resizeWidgetå½æ°çæçè¯è¦æè¿éå»æï¼èªå·±è°èå¸å±åçªå£å¤§å°
mainWnd.setWidget(loginWnd(mainWnd)) # æèªå·±ççªå£æ·»å è¿æ¥
mainWnd.show()
mainWnd2 = FramelessWindow()
mainWnd2.setWindowTitle('注å')
mainWnd2.setWindowIcon(QIcon('Qt.ico'))
mainWnd2.setFixedSize(QSize(650, 500)) # å 为è¿éåºå®äºå¤§å°ï¼æ以çªå£ç大å°æ²¡æåæ³ä»»æè°æ´ï¼æ³è¦ä½¿resizeWidgetå½æ°çæçè¯è¦æè¿éå»æï¼èªå·±è°èå¸å±åçªå£å¤§å°
mainWnd2.setWidget(regist(mainWnd2)) # æèªå·±ççªå£æ·»å è¿æ¥
mainWnd2.hide()
app.exec()