-- coding: utf-8 --
from PyQt5 import QtCore, QtGui, QtWidgets
import sys,os
import win32api
import win32con
from PyQt5.QtWidgets import QApplication , QMainWindow,QMessageBox
from PyQt5.QtCore import QDate, QDateTime, QTime,QStringListModel
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QDialog, QAction, QSystemTrayIcon, QMenu
import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.cron import CronTrigger
from apscheduler.triggers.interval import IntervalTrigger
from apscheduler.triggers.date import DateTrigger
from apscheduler.triggers.base import BaseTrigger
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
from PyQt5.QtWidgets import QSystemTrayIcon
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(546, 548)
MainWindow.setMinimumSize(QtCore.QSize(546, 548))
MainWindow.setMaximumSize(QtCore.QSize(546, 548))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(20, 20, 71, 21))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(20, 60, 61, 16))
self.label_2.setObjectName("label_2")
self.taskpath = QtWidgets.QLineEdit(self.centralwidget)
self.taskpath.setGeometry(QtCore.QRect(80, 20, 341, 21))
self.taskpath.setObjectName("taskpath")
self.taskopenfile = QtWidgets.QPushButton(self.centralwidget)
self.taskopenfile.setGeometry(QtCore.QRect(440, 20, 75, 23))
self.taskopenfile.setObjectName("taskopenfile")
self.taskadd = QtWidgets.QPushButton(self.centralwidget)
self.taskadd.setGeometry(QtCore.QRect(420, 130, 75, 23))
self.taskadd.setObjectName("taskadd")
self.taskname = QtWidgets.QLineEdit(self.centralwidget)
self.taskname.setGeometry(QtCore.QRect(80, 60, 113, 20))
self.taskname.setObjectName("taskname")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(210, 60, 61, 16))
self.label_3.setObjectName("label_3")
self.tasktype = QtWidgets.QComboBox(self.centralwidget)
self.tasktype.setGeometry(QtCore.QRect(270, 60, 71, 22))
self.tasktype.setObjectName("tasktype")
self.tasktype.addItem("")
self.tasktype.addItem("")
self.tasktype.addItem("")
self.tasktype.addItem("")
self.tasktype.addItem("")
self.tasktype.addItem("")
self.tasktype.addItem("")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(360, 62, 54, 20))
self.label_4.setObjectName("label_4")
self.taskrate = QtWidgets.QLineEdit(self.centralwidget)
self.taskrate.setGeometry(QtCore.QRect(400, 60, 113, 20))
self.taskrate.setObjectName("taskrate")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(20, 100, 61, 16))
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(270, 100, 61, 16))
self.label_6.setObjectName("label_6")
self.taskstartime = QtWidgets.QDateTimeEdit(self.centralwidget)
self.taskstartime.setGeometry(QtCore.QRect(80, 100, 181, 22))
self.taskstartime.setObjectName("taskstartime")
self.taskendtime = QtWidgets.QDateTimeEdit(self.centralwidget)
self.taskendtime.setGeometry(QtCore.QRect(330, 100, 181, 22))
self.taskendtime.setDateTime(QtCore.QDateTime(QtCore.QDate(2099, 1, 1), QtCore.QTime(0, 0, 0)))
self.taskendtime.setObjectName("taskendtime")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(20, 130, 71, 21))
self.label_7.setObjectName("label_7")
self.taskboot = QtWidgets.QPushButton(self.centralwidget)
self.taskboot.setGeometry(QtCore.QRect(400, 450, 91, 31))
self.taskboot.setObjectName("taskboot")
self.tasklist = QtWidgets.QListView(self.centralwidget)
self.tasklist.setGeometry(QtCore.QRect(20, 161, 481, 231))
self.tasklist.setObjectName("tasklist")
self.tasklist.setAutoScroll(True)
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(20, 420, 54, 12))
self.label_8.setObjectName("label_8")
self.taskdeletename = QtWidgets.QLineEdit(self.centralwidget)
self.taskdeletename.setGeometry(QtCore.QRect(80, 415, 131, 21))
self.taskdeletename.setObjectName("taskdeletename")
self.taskdelete = QtWidgets.QPushButton(self.centralwidget)
self.taskdelete.setGeometry(QtCore.QRect(320, 410, 75, 31))
self.taskdelete.setObjectName("taskdelete")
self.taskdeleteall = QtWidgets.QPushButton(self.centralwidget)
self.taskdeleteall.setGeometry(QtCore.QRect(410, 410, 81, 31))
self.taskdeleteall.setObjectName("taskdeleteall")
self.taskstartnow = QtWidgets.QPushButton(self.centralwidget)
self.taskstartnow.setGeometry(QtCore.QRect(230, 410, 75, 31))
self.taskstartnow.setObjectName("taskstartnow")
self.label_9 = QtWidgets.QLabel(self.centralwidget)
self.label_9.setGeometry(QtCore.QRect(20, 460, 54, 12))
self.label_9.setObjectName("label_9")
self.taskprocessnum = QtWidgets.QLineEdit(self.centralwidget)
self.taskprocessnum.setGeometry(QtCore.QRect(70, 450, 113, 21))
self.taskprocessnum.setObjectName("taskprocessnum")
self.label_10 = QtWidgets.QLabel(self.centralwidget)
self.label_10.setGeometry(QtCore.QRect(220, 460, 54, 12))
self.label_10.setObjectName("label_10")
self.taskthreadnum = QtWidgets.QLineEdit(self.centralwidget)
self.taskthreadnum.setGeometry(QtCore.QRect(270, 450, 113, 21))
self.taskthreadnum.setObjectName("taskthreadnum")
self.taskstar = QtWidgets.QPushButton(self.centralwidget)
self.taskstar.setGeometry(QtCore.QRect(364, 490, 121, 31))
self.taskstar.setObjectName("taskstar")
self.stop = QtWidgets.QPushButton(self.centralwidget)
self.stop.setGeometry(QtCore.QRect(230, 490, 101, 31))
self.stop.setObjectName("stop")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setStatusTip("")
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.taskstartime.setMinimumDateTime(QDateTime.currentDateTime())
self.taskendtime.setMinimumDateTime(QDateTime.currentDateTime())
self.taskstartime.setCalendarPopup(True)
self.taskendtime.setCalendarPopup(True)
self.retranslateUi(MainWindow)
self.taskopenfile.clicked.connect(MainWindow.onopenfile)
self.taskstartnow.clicked.connect(MainWindow.onstartnow)
self.taskdelete.clicked.connect(MainWindow.ondeletetask)
self.taskdeleteall.clicked.connect(MainWindow.ondeleteall)
self.taskboot.clicked.connect(MainWindow.onstartboot)
self.stop.clicked.connect(MainWindow.onstop)
self.taskstar.clicked.connect(MainWindow.onstart)
self.taskadd.clicked.connect(MainWindow.onadd)
self.tasklist.clicked['QModelIndex'].connect(MainWindow.onselecttask)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "定時(shí)任務(wù)"))
self.label.setText(_translate("MainWindow", "輸入任務(wù):"))
self.label_2.setText(_translate("MainWindow", "任務(wù)名稱(chēng):"))
self.taskpath.setToolTip(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:12pt;\">手動(dòng)輸入任務(wù)或從打開(kāi)文件中選擇</span></p></body></html>"))
self.taskpath.setPlaceholderText(_translate("MainWindow", "D:\\text.exe"))
self.taskopenfile.setText(_translate("MainWindow", "打開(kāi)文件"))
self.taskadd.setText(_translate("MainWindow", "添加任務(wù)"))
self.taskname.setToolTip(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:12pt;\">任務(wù)名稱(chēng)不可重復(fù)</span></p></body></html>"))
self.taskname.setPlaceholderText(_translate("MainWindow", "task_test"))
self.label_3.setText(_translate("MainWindow", "計(jì)劃類(lèi)型:"))
self.tasktype.setCurrentText(_translate("MainWindow", "運(yùn)行一次"))
self.tasktype.setItemText(0, _translate("MainWindow", "運(yùn)行一次"))
self.tasktype.setItemText(1, _translate("MainWindow", "秒(1-59)"))
self.tasktype.setItemText(2, _translate("MainWindow", "分(1-59)"))
self.tasktype.setItemText(3, _translate("MainWindow", "時(shí)(1-23)"))
self.tasktype.setItemText(4, _translate("MainWindow", "天(1-31)"))
self.tasktype.setItemText(5, _translate("MainWindow", "周(1-53)"))
self.tasktype.setItemText(6, _translate("MainWindow", "月(1-12)"))
self.label_4.setText(_translate("MainWindow", "頻率:"))
self.taskrate.setToolTip(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:12pt;\">頻率必須為數(shù)字太防。運(yùn)行一次的頻率不需要填寫(xiě)郑兴,只需要填寫(xiě)開(kāi)始日期</span></p></body></html>"))
self.taskrate.setPlaceholderText(_translate("MainWindow", "10"))
self.label_5.setText(_translate("MainWindow", "開(kāi)始日期:"))
self.label_6.setText(_translate("MainWindow", "結(jié)束日期:"))
self.taskstartime.setDisplayFormat(_translate("MainWindow", "yyyy-MM-dd HH:mm:ss"))
self.taskendtime.setDisplayFormat(_translate("MainWindow", "yyyy-MM-dd HH:mm:ss"))
self.label_7.setText(_translate("MainWindow", "當(dāng)前任務(wù):"))
self.taskboot.setText(_translate("MainWindow", "加入開(kāi)機(jī)啟動(dòng)"))
self.label_8.setText(_translate("MainWindow", "任務(wù)名稱(chēng):"))
self.taskdelete.setText(_translate("MainWindow", "刪除任務(wù)"))
self.taskdeleteall.setText(_translate("MainWindow", "清空任務(wù)"))
self.taskstartnow.setText(_translate("MainWindow", "立即執(zhí)行"))
self.label_9.setText(_translate("MainWindow", "進(jìn)程數(shù):"))
self.taskprocessnum.setPlaceholderText(_translate("MainWindow", "2"))
self.label_10.setText(_translate("MainWindow", "線程數(shù):"))
self.taskthreadnum.setPlaceholderText(_translate("MainWindow", "8"))
self.taskstar.setText(_translate("MainWindow", "啟動(dòng)"))
self.stop.setText(_translate("MainWindow", "停止"))
class MyMainWindow(QMainWindow, Ui_MainWindow):
def init(self, parent=None):
super(MyMainWindow, self).init(parent)
self.setupUi(self)
self.ttype=0
self.qList = []
self.namelist=[]
self.taskprocessnum.setText("2")
self.taskthreadnum.setText("8")
self.loadfile()
self.scheduler = BackgroundScheduler()
self.tuopan = QSystemTrayIcon(self)
self.icon1 = QIcon('test.png')
self.tuopan.setIcon(self.icon1)
#self.tuopan.messageClicked.connect(self.message)
self.tuopan.activated.connect(self.mainwindowshow)
if self.iskjqd():
self.taskboot.setText("取消開(kāi)機(jī)啟動(dòng)")
else:
self.taskboot.setText("開(kāi)機(jī)啟動(dòng)")
def mainwindowshow(self):
self.tuopan.hide()
self.showNormal()
self.activateWindow()
def changeEvent(self, e):
if e.type() == QtCore.QEvent.WindowStateChange:
if self.isMinimized():
self.tuopan.show()
self.hide()
else:
QMainWindow.changeEvent(self, e)
def loadfile(self):
self.qList = []
self.namelist=[]
slm = QStringListModel(); # 創(chuàng)建mode
with open("tasklist.txt") as f:
for x in f:
self.qList.append(x.strip("\n"))
self.namelist.append(x.split(";")[1])
slm.setStringList(self.qList) # 將數(shù)據(jù)設(shè)置到model
self.tasklist.setModel(slm) ##綁定 listView 和 model
def onopenfile(self):
file,_=QtWidgets.QFileDialog.getOpenFileName(self,
"打開(kāi)","C:/","ALL Files (*);;Text Files (*.exe)")
self.taskpath.setText(file)
def onstartnow(self):
if self.taskdeletename.text().strip()=="":
QMessageBox.about(self,"執(zhí)行任務(wù)?","請(qǐng)先選擇要執(zhí)行的任務(wù)尤慰!")
return
taskname=self.taskdeletename.text().strip()+";"
taskpath=""
for l in self.qList:
if taskname in l:
taskpath=l.split(";")[2].strip()
if taskpath:
self.startexe(taskpath)
def startexe(self,py):
dt=datetime.datetime.now()
dir = os.path.dirname(py)
os.chdir(dir)
base = os.path.basename(py)
re=os.system('start {}'.format(base))
if re==0:
res="成功"
else:
res="失敗"
self.tuopan.showMessage("運(yùn)行結(jié)果", "{}的任務(wù){(diào)}運(yùn)行結(jié)果為{}"
.format(dt,py,res), icon=3)
def ondeletetask(self):
if self.taskdeletename.text().strip()=="":
QMessageBox.about(self,"刪除任務(wù)啃匿?","請(qǐng)先選擇要?jiǎng)h除的任務(wù)蛔外!")
return
re=QMessageBox.information(self, '確認(rèn)刪除?',
'刪除任務(wù){(diào)}'.format(self.taskdeletename.text()),
QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
if re==QMessageBox.Yes:
self.deletefileline(self.taskdeletename.text().strip())
self.loadfile()
def ondeleteall(self):
re = QMessageBox.information(self, '確認(rèn)刪除溯乒?',
'確認(rèn)刪除所有任務(wù)夹厌?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
if re==QMessageBox.Yes:
with open('tasklist.txt', "r+") as f:
f.truncate()
self.loadfile()
def kjqd(self):
zdynames = os.path.basename(__file__) # 當(dāng)前文件名的名稱(chēng)如:newsxiao.py
name = os.path.splitext(zdynames)[0] # 獲得文件名的前部分,如:newsxiao
path = os.path.abspath(os.path.dirname(__file__)) + '\\' + zdynames # 要添加的exe完整路徑如:
# 注冊(cè)表項(xiàng)名
KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
# 異常處理
try:
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, KeyName, 0, win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx(key, name, 0, win32con.REG_SZ, path)
win32api.RegCloseKey(key)
print('添加成功!')
self.taskboot.setText("取消開(kāi)機(jī)啟動(dòng)")
except:
print('添加失敗')
def qxqd(self):
zdynames = os.path.basename(__file__) # 當(dāng)前文件名的名稱(chēng)如:newsxiao.py
name = os.path.splitext(zdynames)[0] # 獲得文件名的前部分,如:newsxiao
path = os.path.abspath(os.path.dirname(__file__)) + '\\' + "{}.exe".format(name) # 要添加的exe完整路徑如:
# 注冊(cè)表項(xiàng)名
KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
# 異常處理
try:
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, KeyName, 0, win32con.KEY_ALL_ACCESS)
win32api.RegDeleteValue(key, name)
win32api.RegCloseKey(key)
print('刪除成功')
self.taskboot.setText("開(kāi)機(jī)啟動(dòng)")
except:
print('刪除失敗')
def iskjqd(self):
zdynames = os.path.basename(__file__) # 當(dāng)前文件名的名稱(chēng)如:newsxiao.py
name = os.path.splitext(zdynames)[0] # 獲得文件名的前部分,如:newsxiao
path = os.path.abspath(os.path.dirname(__file__)) + '\\' + "{}.exe".format(name) # 要添加的exe完整路徑如:
# 注冊(cè)表項(xiàng)名
KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
# 異常處理
try:
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, KeyName, 0, win32con.KEY_ALL_ACCESS)
value, key_type = win32api.RegQueryValueEx(key, name)
win32api.RegCloseKey(key)
return True
except:
return False
def onstartboot(self):
if self.iskjqd():
self.kjqd()
else:
self.qxqd()
def onstop(self):
self.scheduler.shutdown()
self.taskstar.setEnabled(True)
def onstart(self):
self.scheduler.remove_all_jobs()
for l in self.qList:
ls=l.split(";")
if ls[0]=="onetime":
self.scheduler.add_job(func=self.startexe, args=(ls[2],),
trigger=DateTrigger(
datetime.datetime.strptime(ls[3], "%Y-%m-%d %H:%M:%S")))
elif ls[0]=="second":
self.scheduler.add_job(self.startexe, 'interval',
seconds=int(ls[5]),
start_date=ls[3],
end_date=ls[4],
args=(ls[2],))
elif ls[0]=="minute":
self.scheduler.add_job(self.startexe, 'interval',
minutes=int(ls[5]),
start_date=ls[3],
end_date=ls[4],
args=(ls[2],))
elif ls[0]=="hour":
self.scheduler.add_job(self.startexe, 'interval',
hours=int(ls[5]),
start_date=ls[3],
end_date=ls[4],
args=(ls[2],))
elif ls[0]=="day":
self.scheduler.add_job(self.startexe, 'interval',
days=int(ls[5]),
start_date=ls[3],
end_date=ls[4],
args=(ls[2],))
elif ls[0]=="week":
self.scheduler.add_job(self.startexe, 'interval',
weeks=int(ls[5]),
start_date=ls[3],
end_date=ls[4],
args=(ls[2],))
elif ls[0]=="month":
self.scheduler.add_job(self.startexe, 'interval',
months=int(ls[5]),
start_date=ls[3],
end_date=ls[4],
args=(ls[2],))
try:
th=int(self.taskthreadnum.text())
except:
th=8
try:
pr=int(self.taskprocessnum.text())
except:
pr=4
executors = {
'default': ThreadPoolExecutor(th),
'processpool': ProcessPoolExecutor(pr)
}
self.scheduler.configure(executors=executors)
self.scheduler.start()
self.taskstar.setEnabled(False)
def onselecttask(self,qModelIndex):
self.taskdeletename.setText(self.qList[qModelIndex.row()].split(";")[1])
def onadd(self):
if self.tasktype.currentIndex()==0:
if not self.checkonetype()[0]:
QMessageBox.about(self, '填寫(xiě)錯(cuò)誤',self.checkonetype()[1])
return
elif self.tasktype.currentIndex()==1:
if not self.checksecond()[0]:
QMessageBox.about(self, '填寫(xiě)錯(cuò)誤',self.checksecond()[1])
return
elif self.tasktype.currentIndex()==2:
if not self.checkminute()[0]:
QMessageBox.about(self, '填寫(xiě)錯(cuò)誤',self.checkminute()[1])
return
elif self.tasktype.currentIndex()==3:
if not self.checkhour()[0]:
QMessageBox.about(self, '填寫(xiě)錯(cuò)誤',self.checkhour()[1])
return
elif self.tasktype.currentIndex()==4:
if not self.checkday()[0]:
QMessageBox.about(self, '填寫(xiě)錯(cuò)誤',self.checkday()[1])
return
elif self.tasktype.currentIndex()==5:
if not self.checkweek()[0]:
QMessageBox.about(self, '填寫(xiě)錯(cuò)誤',self.checkweek()[1])
return
elif self.tasktype.currentIndex()==6:
if not self.checkmonth()[0]:
QMessageBox.about(self, '填寫(xiě)錯(cuò)誤',self.checkmonth()[1])
return
self.writefile()
def checkonetype(self):
message=""
result=True
if self.taskpath.text().strip()=="":
message+="要運(yùn)行的任務(wù)不能為空裆悄!\n"
result=False
if self.taskname.text().strip()=="":
message+="任務(wù)的名稱(chēng)不能為空矛纹!\n"
result=False
elif self.taskname.text().strip() in self.namelist:
message += "任務(wù)的名稱(chēng)不能重復(fù)!\n"
result = False
return (result,message)
def checksecond(self):
message=self.checkonetype()[1]
result=self.checkonetype()[0]
try:
minute=int(self.taskrate.text().strip())
if minute<1 or minute>59:
message += "秒必須是1-59的數(shù)字光稼!\n"
result = False
return (result, message)
except:
message+="秒必須是1-59的數(shù)字或南!\n"
result=False
return (result,message)
startime=datetime.datetime.strptime(self.taskstartime.text(), "%Y-%m-%d %H:%M:%S")
endtime=datetime.datetime.strptime(self.taskendtime.text(), "%Y-%m-%d %H:%M:%S")
if startime>endtime:
message += "開(kāi)始時(shí)間不能大于結(jié)束時(shí)間!\n"
result = False
return (result, message)
return (result, message)
def checkminute(self):
message=self.checkonetype()[1]
result=self.checkonetype()[0]
try:
minute=int(self.taskrate.text().strip())
if minute<1 or minute>59:
message += "分必須是1-59的數(shù)字艾君!\n"
result = False
return (result, message)
except:
message+="分必須是1-59的數(shù)字采够!\n"
result=False
return (result,message)
startime = datetime.datetime.strptime(self.taskstartime.text(), "%Y-%m-%d %H:%M:%S")
endtime = datetime.datetime.strptime(self.taskendtime.text(), "%Y-%m-%d %H:%M:%S")
if startime > endtime:
message += "開(kāi)始時(shí)間不能大于結(jié)束時(shí)間!\n"
result = False
return (result, message)
return (result, message)
def checkhour(self):
message=self.checkonetype()[1]
result=self.checkonetype()[0]
try:
hour=int(self.taskrate.text().strip())
if hour<1 or hour>23:
message += "時(shí)必須是1-23的數(shù)字冰垄!\n"
result = False
return (result, message)
except:
message+="時(shí)必須是1-23的數(shù)字蹬癌!\n"
result=False
return (result,message)
startime = datetime.datetime.strptime(self.taskstartime.text(), "%Y-%m-%d %H:%M:%S")
endtime = datetime.datetime.strptime(self.taskendtime.text(), "%Y-%m-%d %H:%M:%S")
if startime > endtime:
message += "開(kāi)始時(shí)間不能大于結(jié)束時(shí)間!\n"
result = False
return (result, message)
return (result, message)
def checkday(self):
message=self.checkonetype()[1]
result=self.checkonetype()[0]
try:
day=int(self.taskrate.text().strip())
if day<1 or day>31:
message += "天必須是1-31的數(shù)字虹茶!\n"
result = False
return (result, message)
except:
message+="天必須是1-31的數(shù)字逝薪!\n"
result=False
return (result,message)
startime = datetime.datetime.strptime(self.taskstartime.text(), "%Y-%m-%d %H:%M:%S")
endtime = datetime.datetime.strptime(self.taskendtime.text(), "%Y-%m-%d %H:%M:%S")
if startime > endtime:
message += "開(kāi)始時(shí)間不能大于結(jié)束時(shí)間!\n"
result = False
return (result, message)
return (result, message)
def checkweek(self):
message=self.checkonetype()[1]
result=self.checkonetype()[0]
try:
week=int(self.taskrate.text().strip())
if week<1 or week>23:
message += "周必須是1-53的數(shù)字蝴罪!\n"
result = False
return (result, message)
except:
message+="周必須是1-53的數(shù)字董济!\n"
result=False
return (result,message)
startime = datetime.datetime.strptime(self.taskstartime.text(), "%Y-%m-%d %H:%M:%S")
endtime = datetime.datetime.strptime(self.taskendtime.text(), "%Y-%m-%d %H:%M:%S")
if startime > endtime:
message += "開(kāi)始時(shí)間不能大于結(jié)束時(shí)間!\n"
result = False
return (result, message)
return (result, message)
def checkmonth(self):
message=self.checkonetype()[1]
result=self.checkonetype()[0]
try:
month=int(self.taskrate.text().strip())
if month<1 or month>12:
message += "月必須是1-12的數(shù)字洲炊!\n"
result = False
return (result, message)
except:
message+="月必須是1-12的數(shù)字感局!\n"
result=False
return (result,message)
startime = datetime.datetime.strptime(self.taskstartime.text(), "%Y-%m-%d %H:%M:%S")
endtime = datetime.datetime.strptime(self.taskendtime.text(), "%Y-%m-%d %H:%M:%S")
if startime > endtime:
message += "開(kāi)始時(shí)間不能大于結(jié)束時(shí)間!\n"
result = False
return (result, message)
return (result, message)
def deletefileline(self,taskname):
taskname+=";"
with open("tasklist.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
with open("tasklist.txt", "w", encoding="utf-8") as f_w:
for line in lines:
if taskname in line:
continue
f_w.write(line)
def writefile(self):
with open("tasklist.txt","a+") as f:
if self.tasktype.currentIndex()==0:
f.write("onetime;{};{};{}\n"
.format(self.taskname.text().strip(),
self.taskpath.text().strip(),
self.taskstartime.text().strip()))
elif self.tasktype.currentIndex() == 1:
f.write("second;{};{};{};{};{}\n"
.format(self.taskname.text().strip(),
self.taskpath.text().strip(),
self.taskstartime.text().strip(),
self.taskendtime.text().strip(),
self.taskrate.text().strip()))
elif self.tasktype.currentIndex() == 2:
f.write("minute;{};{};{};{};{}\n"
.format(self.taskname.text().strip(),
self.taskpath.text().strip(),
self.taskstartime.text().strip(),
self.taskendtime.text().strip(),
self.taskrate.text().strip()))
elif self.tasktype.currentIndex() == 3:
f.write("hour;{};{};{};{};{}\n"
.format(self.taskname.text().strip(),
self.taskpath.text().strip(),
self.taskstartime.text().strip(),
self.taskendtime.text().strip(),
self.taskrate.text().strip()))
elif self.tasktype.currentIndex() == 4:
f.write("day;{};{};{};{};{}\n"
.format(self.taskname.text().strip(),
self.taskpath.text().strip(),
self.taskstartime.text().strip(),
self.taskendtime.text().strip(),
self.taskrate.text().strip()))
elif self.tasktype.currentIndex() == 5:
f.write("week;{};{};{};{};{}\n"
.format(self.taskname.text().strip(),
self.taskpath.text().strip(),
self.taskstartime.text().strip(),
self.taskendtime.text().strip(),
self.taskrate.text().strip()))
elif self.tasktype.currentIndex() == 6:
f.write("month;{};{};{};{};{}\n"
.format(self.taskname.text().strip(),
self.taskpath.text().strip(),
self.taskstartime.text().strip(),
self.taskendtime.text().strip(),
self.taskrate.text().strip()))
self.namelist.append(self.taskname.text().strip())
self.loadfile()
if name == "main":
app = QApplication(sys.argv)
myWin = MyMainWindow()
myWin.show()
sys.exit(app.exec_())