我是靠谱客的博主 谨慎猫咪,最近开发中收集的这篇文章主要介绍使用PyQt5实现日记本demo,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 1.UI界面代码

使用Qt Designer设计界面,自动生成的代码

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'D:PythonptqtPyqtCodediary_bookdiary.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(377, 442)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.groupBox = QtWidgets.QGroupBox(self.centralWidget)
        self.groupBox.setGeometry(QtCore.QRect(10, 70, 341, 331))
        self.groupBox.setObjectName("groupBox")
        self.textEdit_write_diary = QtWidgets.QTextEdit(self.groupBox)
        self.textEdit_write_diary.setGeometry(QtCore.QRect(10, 110, 321, 221))
        self.textEdit_write_diary.setObjectName("textEdit_write_diary")
        self.label = QtWidgets.QLabel(self.groupBox)
        self.label.setGeometry(QtCore.QRect(20, 32, 54, 12))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.groupBox)
        self.label_2.setGeometry(QtCore.QRect(20, 65, 54, 12))
        self.label_2.setObjectName("label_2")
        self.lineEdit_date = QtWidgets.QLineEdit(self.groupBox)
        self.lineEdit_date.setGeometry(QtCore.QRect(60, 30, 130, 20))
        self.lineEdit_date.setObjectName("lineEdit_date")
        self.lineEdit_weather = QtWidgets.QLineEdit(self.groupBox)
        self.lineEdit_weather.setGeometry(QtCore.QRect(60, 60, 113, 20))
        self.lineEdit_weather.setObjectName("lineEdit_weather")
        self.label_3 = QtWidgets.QLabel(self.groupBox)
        self.label_3.setGeometry(QtCore.QRect(20, 90, 54, 12))
        self.label_3.setObjectName("label_3")
        self.groupBox_2 = QtWidgets.QGroupBox(self.centralWidget)
        self.groupBox_2.setGeometry(QtCore.QRect(20, 10, 201, 51))
        self.groupBox_2.setObjectName("groupBox_2")
        self.dateTimeEdit = QtWidgets.QDateTimeEdit(self.groupBox_2)
        self.dateTimeEdit.setGeometry(QtCore.QRect(0, 20, 194, 22))
        self.dateTimeEdit.setObjectName("dateTimeEdit")
        
        self.groupBox_3 = QtWidgets.QGroupBox(self.centralWidget)
        self.groupBox_3.setGeometry(QtCore.QRect(230, 10, 120, 51))
        self.groupBox_3.setObjectName("groupBox_3")
        self.comboBox = QtWidgets.QComboBox(self.groupBox_3)
        self.comboBox.setGeometry(QtCore.QRect(30, 20, 69, 22))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtWidgets.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 377, 23))
        self.menuBar.setObjectName("menuBar")
        self.menu = QtWidgets.QMenu(self.menuBar)
        self.menu.setObjectName("menu")
        self.menu_2 = QtWidgets.QMenu(self.menuBar)
        self.menu_2.setObjectName("menu_2")
        self.menu_3 = QtWidgets.QMenu(self.menuBar)
        self.menu_3.setTitle("")
        self.menu_3.setObjectName("menu_3")
        MainWindow.setMenuBar(self.menuBar)
        self.action_open = QtWidgets.QAction(MainWindow)
        self.action_open.setObjectName("action_open")
        self.action_close = QtWidgets.QAction(MainWindow)
        self.action_close.setObjectName("action_close")
        self.action_alter = QtWidgets.QAction(MainWindow)
        self.action_alter.setObjectName("action_alter")
        self.action_save = QtWidgets.QAction(MainWindow)
        self.action_save.setObjectName("action_save")
        self.action_about = QtWidgets.QAction(MainWindow)
        self.action_about.setObjectName("action_about")
        self.menu.addAction(self.action_open)
        self.menu.addSeparator()
        self.menu.addAction(self.action_alter)
        self.menu.addAction(self.action_save)
        self.menu.addAction(self.action_close)
        self.menu_2.addAction(self.action_about)
        self.menuBar.addAction(self.menu.menuAction())
        self.menuBar.addAction(self.menu_2.menuAction())
        self.menuBar.addAction(self.menu_3.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.groupBox.setTitle(_translate("MainWindow", "写日记"))
        self.label.setText(_translate("MainWindow", "日期:"))
        self.label_2.setText(_translate("MainWindow", "天气:"))
        self.label_3.setText(_translate("MainWindow", "内容"))
        self.groupBox_2.setTitle(_translate("MainWindow", "日期"))
        self.groupBox_3.setTitle(_translate("MainWindow", "天气"))
        self.comboBox.setItemText(0, _translate("MainWindow", "晴朗"))
        self.comboBox.setItemText(1, _translate("MainWindow", "下雨"))
        self.comboBox.setItemText(2, _translate("MainWindow", "阴天"))
        self.comboBox.setItemText(3, _translate("MainWindow", "下雪"))
        self.comboBox.setItemText(4, _translate("MainWindow", "雾霾"))
        self.menu.setTitle(_translate("MainWindow", "文件"))
        self.menu_2.setTitle(_translate("MainWindow", "关于我们"))
        self.action_open.setText(_translate("MainWindow", "打开日记本"))
        self.action_close.setText(_translate("MainWindow", "关闭"))
        self.action_alter.setText(_translate("MainWindow", "修改日记"))
        self.action_save.setText(_translate("MainWindow", "保存日记"))
        self.action_about.setText(_translate("MainWindow", "关于"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

2.功能代码

# -*- coding: utf-8 -*-

"""
Module implementing MainWindow.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow, QMessageBox

from Ui_diary import Ui_MainWindow
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication,QWidget,QFileDialog
from PyQt5.QtCore import QDate,QDateTime,QTime

class MainWindow(QMainWindow, Ui_MainWindow):
    """
    记账本小demo
    """
    def __init__(self, parent=None):
        """
        初始化界面
        """
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        #弹出日历控件
        self.dateTimeEdit.setCalendarPopup(True)
        #信号
        self.dateTimeEdit.dateTimeChanged.connect(self.display_date)
        self.comboBox.currentIndexChanged.connect(self.display_weather) 
       
     
    def display_date(self):
        """把所选择的日期显示在单行文本框中"""
        
        date = self.dateTimeEdit.date()
        date_info = self.lineEdit_date.setText(date.toString("yyyy-MM-dd dddd"))
        date_info = self.textEdit_write_diary.setPlainText(date.toString("yyyy-MM-dd dddd") + 'n')
              
 
    def display_weather(self,weather):  
        """把所选择的天气显示在单行文本框中"""
        
        weather = self.comboBox.currentText()
        self.lineEdit_weather.setText(weather)
        #self.textEdit_write_diary.setPlainText(a + weather)  
    
    @pyqtSlot()
    def on_action_open_triggered(self):
        """
        打开文件,显示在多行文本框中,即显示日记在文本框中
        """
        print("打开")
        filename=QFileDialog.getOpenFileName(self,'打开文件夹','.')
        #r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
        #关键字with在不再需要访问文件后将其关闭 ,open返回的对象存储在f这个变量当中
        with open(filename[0],'r') as f:
            my_txt=f.read()
            self.textEdit_write_diary.setPlainText(my_txt)
            
    @pyqtSlot()
    def on_action_alter_triggered(self):
        """
        修改日记
        """
        print("修改日记")
        filename=QFileDialog.getOpenFileName(self,'打开文件夹','.')
        #r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
        #关键字with在不再需要访问文件后将其关闭 ,open返回的对象存储在f这个变量当中
        with open(filename[0],'r') as f:
            my_txt=f.read()
            self.textEdit_write_diary.setPlainText(my_txt)
            
    
    @pyqtSlot()
    def on_action_save_triggered(self):
        """
        Slot documentation goes here.
        """
        filename=QFileDialog.getSaveFileName(self,'保存文件','.')
        with open(filename[0],'w') as f:
            my_text=self.textEdit_write_diary.toPlainText()
            f.write(my_text)
        
    @pyqtSlot()
    def on_action_close_triggered(self):
        """
        关闭窗口
        """
        main_Window = QApplication.instance()
        main_Window.quit()
        
    
    @pyqtSlot()
    def on_action_about_triggered(self):
        """
        弹出一个对画框
        """
        QMessageBox.information(self, '关于我们', '欢迎使用日记本小程序~')
        
        
if __name__ == "__main__":   
    app = QtWidgets.QApplication(sys.argv)
    ui = MainWindow()
    ui.show()
    sys.exit(app.exec_())

3.结果展示

 

最后

以上就是谨慎猫咪为你收集整理的使用PyQt5实现日记本demo的全部内容,希望文章能够帮你解决使用PyQt5实现日记本demo所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部