一、工作内容:
9:00-20:00
1.输入框
from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QLineEdit,QTextEdit,QGridLayout
import sys
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
grid = QGridLayout()
self.setLayout(grid)
title = QLabel('标题:')
title_edit = QLineEdit()
grid.addWidget(title,1,1)
grid.addWidget(title_edit,1,2)
author = QLabel('作者:')
author_edit = QLineEdit()
grid.addWidget(author,2,1)
grid.addWidget(author_edit,2,2)
text = QLabel('正文:')
text_edit = QTextEdit()
grid.addWidget(text,3,1)
grid.addWidget(text_edit,3,2)
self.setGeometry(300,300,300,200) #窗口内容少可以设置一下,内容多就自适应
self.setWindowTitle('文本编辑器')
self.show()
if __name__ =='__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
2.计算器
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QGridLayout,QLineEdit
from PyQt5.QtCore import Qt
from PyQt5.QtCore import QCoreApplication
import sys
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
#创建一个表格布局
grid = QGridLayout()
self.setLayout(grid)
#创建计算器的显示器
self.screen = QLineEdit() #self.screen 成员变量
#设置显示器为只读模式(只允许从计算器按钮输入)
self.screen.setReadOnly(True)
#设置显示器内容右对齐
self.screen.setAlignment(Qt.AlignRight)
grid.addWidget(self.screen,0,1,1,4) # 方法重载,1,4为行、列扩展,表示所占行、列数
#创建所有按钮标签
labels = ['<——','CE','C','Close',
'7','8','9','/',
'4','5','6','*',
'1','2','3','-',
'0','.','=','+']
#创建按钮的位置参数
positions = [(x,y) for x in range(1,6) for y in range(1,5)]
#print(positions)
#创建按钮并添加到表格中
for label,position in zip(labels,positions):
btn= QPushButton(label)
btn.clicked.connect(self.function)
grid.addWidget(btn,*position)
#grid.addWidget(label,position[0],position[1])
# backspace = QPushButton('<——')
# grid.addWidget(backspace,1,1)
# ce = QPushButton('CE')
# grid.addWidget(ce,1,2)
self.move(500,500)
self.setWindowTitle('计算器')
self.show()
def function(self):
#获取对应按键的内容
text=self.sender().text()
#判断被按下的按钮,然后执行相应的操作
if text == '<——':
self.backspace()
elif text == 'C' or text == 'CE':
self.clear()
elif text =='Close':
self.Close()
elif text == '=':
self.calculate()
else:
self.write(text)
#print(text)
def backspace(self):
#获取文本框的内容
a=self.screen.text()
#向文本框写入内容
self.screen.setText(a[:-1])
def clear(self):
self.screen.setText('')
def Close(self):
QCoreApplication.instance().quit()
def calculate(self):
a=self.screen.text()
#b=eval(a) #可以对字符串进行数学运算
self.screen.setText(str(eval(a)))
def write(self,text):
#向文本框写入内容
self.screen.setText(self.screen.text()+text)
if __name__ =='__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
3.状态栏
from PyQt5.QtWidgets import QApplication,QMainWindow
import sys,time
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
#创建状态栏
status = self.statusBar()
#在状态栏显示信息
status.showMessage('准备好了')
time.sleep(10)
#status.showMessage('可以开始了')
self.setGeometry(300,300,300,200)
self.setWindowTitle('状态栏')
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
4.菜单栏
from PyQt5.QtWidgets import QApplication,QMainWindow,qApp,QAction
from PyQt5.QtGui import QIcon
import sys
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
#创建一个菜单条目
exitAction=QAction(QIcon(r'python\day9计算器输入框\exit3.png'),'退出',self)
confirmAction=QAction(QIcon(r'python\day9计算器输入框\exit3.png'),'保存',self)
#添加快捷键
exitAction.setShortcut('ctrl+Q')
#添加一个提示
exitAction.setStatusTip('退出程序!')
#给菜单条目添加动作
exitAction.triggered.connect(qApp.quit)
#创建一个菜单栏
menuBar = self.menuBar()
#添加一个File菜单
fileMenu = menuBar.addMenu('File')
editMenu = menuBar.addMenu('Edit')
#添加菜单条目
fileMenu.addAction(exitAction)
editMenu.addAction(confirmAction)
self.setGeometry(300,300,300,200)
self.setWindowTitle('程序菜单')
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
5.工具栏
from PyQt5.QtWidgets import QApplication,QMainWindow,qApp,QAction
from PyQt5.QtGui import QIcon
import sys
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
exitAction = QAction(QIcon(r'python\day9计算器输入框\exit.png'),'退出',self)
exitAction.setShortcut('ctrl+Q')
exitAction.triggered.connect(qApp.quit)
#创建工具栏
toolBar = self.addToolBar('工具栏')
toolBar.addAction(exitAction)
self.setGeometry(300,300,300,200)
self.setWindowTitle('工具栏')
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
21:00-23:00
完成将菜单栏、工具栏、状态栏在同一界面实现作业
二、遇到的问题
将菜单栏、工具栏、状态栏在同一界面实现
三、解决办法
from PyQt5.QtWidgets import QApplication,QMainWindow,qApp,QAction,QVBoxLayout
from PyQt5.QtGui import QIcon
import sys
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
'''菜单栏'''
#创建一个菜单条目
fileAction=QAction(QIcon(r'python\day9计算器输入框\exit3.png'),'New File',self)
#添加快捷键
fileAction.setShortcut('ctrl+s')
#添加一个提示
#saveAction.setStatusTip('退出程序!')
#给菜单条目添加动作
fileAction.triggered.connect(qApp.sender)
#创建一个菜单栏
menuBar = self.menuBar()
#添加一个File菜单
fileMenu = menuBar.addMenu('File')
editMenu = menuBar.addMenu('Edit')
selectionMenu = menuBar.addMenu('Selection')
viewMenu = menuBar.addMenu('View')
#添加菜单条目
fileMenu.addAction(fileAction)
editMenu.addAction(fileAction)
selectionMenu.addAction(fileAction)
viewMenu.addAction(fileAction)
'''工具栏'''
confirmAction=QAction(QIcon(r'python\day9计算器输入框\exit.png'),'保存',self)
toolBar = self.addToolBar('')
toolBar.addAction(fileAction)
toolBar.addAction(confirmAction)
'''状态栏'''
#创建状态栏
status = self.statusBar()
#在状态栏显示信息
status.showMessage('准备好了',)
self.setGeometry(300,300,300,200)
self.setWindowTitle('vscode')
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
|