传统启动方法:
1.通过终端方式:cmd startup
2.直接进入Tomcat/bin目录下点击startup.bat
准备工作:
需要安装库:pip install Pyside2
pip install subprocess
使用工具:VS Code 、Qt Designe
修改conf/logging.properties日志配置文件来屏蔽掉日志信息,也可以设置成OFF,直接禁用掉。
修改在tomcat的安装目录conf文件夹下server.xml里配置,将AccessLogValve注释掉:
修改tomcatbin/setclasspath.bat文件中找到 set_RUNJAVA="%JRE_HOME\bin\java", 并修改为set_RUNJAVA="%JRE_HOME\bin\javaw"
不会出现在任务栏上,而只是在后台运行
最后,上代码
from PySide2.QtCore import QFile
from PySide2.QtWidgets import QApplication
from PySide2.QtUiTools import QUiLoader
from PySide2.QtGui import QIcon
import subprocess
import time
class Stats:
# 类初始化
def __init__(self):
# 从文件中加载UI定义
qfile_stats = QFile('UI/server.ui')
qfile_stats.open(QFile.ReadOnly)
qfile_stats.close()
self.ui = QUiLoader().load(qfile_stats)
# 设置QPlainTextEdit为只读状态
self.ui.cfg_log.setReadOnly(True)
# 当按钮被点击就会发出 clicked 信号,可以这样指定处理该信号的函数
self.ui.start_btn.clicked.connect(self.cmd_start)
self.ui.stop_btn.clicked.connect(self.cmd_stop)
self.ui.clear_btn.clicked.connect(self.cmd_clear)
# 结果是时间戳,显示本地时间
self.localTime = time.asctime(time.localtime(time.time()))
# 设置界面标题
self.ui.setWindowTitle('TOMSER')
# 启动
def cmd_start(self):
# cmd = 'cmd.exe D:\\Py\\Day04\\bat\\startup.bat'
self.p = subprocess.Popen("cmd.exe /c" + "D:\\Py\\Day04\\bat\\startup.bat", stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
self.sta_suc = '\t--------------------Tomcat服务器已启动--------------------'
# 用format 格式化函数设置指定位置,在QPlainTextEdit显示时间和信息
self.ui.cfg_log.appendPlainText('{1}\n{0}'.format(self.localTime,self.sta_suc))
for cur in range(5):
self.curline = self.p.stdout.readline()
self.ui.cfg_log.appendPlainText('{0} {1}'.format(cur,str(self.curline)))
# 当点击启动按钮后,禁用状态
self.ui.start_btn.setEnabled(False)
# 关闭
def cmd_stop(self):
# cmd = 'cmd.exe D:\\Py\\Day04\\bat\\shutdown.bat'
self.p = subprocess.Popen("cmd.exe /c" + "D:\\Py\\Day04\\bat\\shutdown.bat", stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
self.sta_suc = '\n\n\t--------------------Tomcat服务器已关闭--------------------'
self.ui.cfg_log.appendPlainText('{0}\n{1}'.format(self.sta_suc,self.localTime))
for cur in range(5):
# 读取整行返回信息
self.curline = self.p.stdout.readline()
self.ui.cfg_log.appendPlainText('{0} {1}'.format(cur,str(self.curline)))
# 当点击关闭按钮后,立即变成禁用状态;启动按钮恢复启用状态
self.ui.stop_btn.setEnabled(False)
self.ui.start_btn.setEnabled(True)
# 清屏
def cmd_clear(self):
self.ui.cfg_log.clear()
# 初始化操作
app = QApplication([])
# 添加主窗口图标
app.setWindowIcon(QIcon('images/Tomcat.ico'))
# 类的实例化
stats = Stats()
# 在主窗口上所有的控件都显示在屏幕上
stats.ui.show()
# 关闭主窗口Tomcat服务器在后台也关闭了
app.aboutToQuit.connect(stats.cmd_stop)
# 运行主循环,并在退出时返回状态代码
app.exec_()
运行成功后
打包程序:pyinstaller Tomcat.py --noconsole --hidden-import PySide2.QtXml --icon = "图片路径"
启动Tomcat应用程序
进入../dist\Tomcat目录,双击Tomcat.exe