import sys
import time
from PyQt5.QtCore import QRect, QTimer
from qtpy.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QListWidget, QLineEdit, QPushButton, QHBoxLayout, \
QTextEdit, QMessageBox, QSlider
class MyMemoApp(QWidget):
def __init__(self):
super().__init__()
# self.slider = None
self.initUI()
def initUI(self):
# 创建一个竖直布局
vbox = QVBoxLayout()
timer = QTimer(self)
timer.timeout.connect(self.updateTime)
timer.start(1000)
# 创建一个列表框,长度200px,宽度200px
self.listWidget = QListWidget(self)
self.listWidget.setFixedSize(self.width(), 200)
# 创建文本框控件,距离列表20px的位置
self.textEdit = QTextEdit(self)
self.textEdit.setPlaceholderText("请输入内容!")
self.textEdit.setGeometry(
QRect(50, (self.height() - self.textEdit.height()) / 2.1, 500, self.textEdit.height()))
# self.textEdit.setGeometry(0, 0, self.width(), 100)
# 创建删除按钮控件,距离文本框20px的位置,平行间距50px
self.btnDel = QPushButton(self)
self.btnDel.setText('删除')
self.btnDel.clicked.connect(self.del_list)
self.btnDel.setGeometry((self.width() - self.btnDel.width()) / 4, (self.height() - self.btnDel.height()) / 1.8,
100, 50)
# 创建增加按钮控件,距离文本框20px的位置,平行间距50px
self.btnAdd = QPushButton(self)
self.btnAdd.setText('增加')
self.btnAdd.clicked.connect(self.add_list)
# self.btnAdd.setGeometry(70, 250, 50, 20)
self.btnAdd.setGeometry((self.width() - self.btnAdd.width()) / 1.4,
(self.height() - self.btnAdd.height()) / 1.8,
100, 50)
self.slider = QSlider(Qt.Horizontal, self)
self.slider.setGeometry(QRect(50, 350, self.width() - 100, 20))
self.slider.setMinimum(0)
self.slider.setMaximum(100)
self.slider.valueChanged[int].connect(self.on_valueChanged)
def on_valueChanged(self, value):
self.setWindowOpacity(1 - value / 100)
# self.setStyleSheet('border: 2px solid green;')
# self.setStyleSheet('QWidget{border: 2px solid green;}')
def add_list(self):
if self.textEdit.toPlainText() == '': # 判断文本框是否为空
QMessageBox.information(self, '提示', '请输入内容!', QMessageBox.Ok)
else:
index = self.listWidget.count() + 1 # 获取列表项目数加1,用于显示序号
self.listWidget.addItem('{}. {}'.format(index, self.textEdit.toPlainText())) # 把文本框中的内容显示在列表当中
def updateTime(self):
timeStr = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
self.setWindowTitle("备忘录-" + timeStr)
def del_list(self):
current_row = self.listWidget.currentRow() # 获取当前选中的行
if current_row == -1: # 判断是否有选中的行
QMessageBox.information(self, '提示', '请先选中一项!', QMessageBox.Ok)
else:
self.listWidget.takeItem(current_row) # 删除列表中选中的项目
for i in range(current_row, self.listWidget.count()): # 重新设置序号
item = self.listWidget.item(i) # 获取列表项目
item.setText('{}. {}'.format(i + 1, item.text().split('.')[-1])) # 重新设置序号
if __name__ == '__main__':
app = QApplication(sys.argv)
myshow = MyMemoApp()
myshow.show()
sys.exit(app.exec_())