# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'patch_test.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtWidgets
import sys
import os
import re
import time
import win32api,win32con
class Ui_mainWindow(object):
def setupUi(self, mainWindow):
mainWindow.setObjectName("mainWindow")
mainWindow.resize(731, 661)
self.cwd = os.getcwd()
self.centralwidget = QtWidgets.QWidget(mainWindow)
self.centralwidget.setObjectName("centralwidget")
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(140, 10, 71, 31))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(10, 10, 101, 31))
self.label.setObjectName("label")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(10, 120, 141, 41))
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(10, 160, 141, 41))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(10, 200, 141, 41))
self.label_5.setObjectName("label_5")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(140, 130, 181, 21))
self.lineEdit_2.setObjectName("lineEdit_2")
#self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
#self.lineEdit_3.setGeometry(QtCore.QRect(140, 170, 181, 21))
#self.lineEdit_3.setObjectName("lineEdit_3")
self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_4.setGeometry(QtCore.QRect(140, 210, 181, 21))
self.lineEdit_4.setObjectName("lineEdit_4")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(110, 510, 75, 23))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(540, 510, 75, 23))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(340, 570, 75, 23))
self.pushButton_3.setObjectName("pushButton_3")
self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_4.setGeometry(QtCore.QRect(340, 130, 75, 23))
self.pushButton_4.setObjectName("pushButton_4")
#self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
#self.pushButton_5.setGeometry(QtCore.QRect(340, 170, 75, 23))
#self.pushButton_5.setObjectName("pushButton_5")
self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_6.setGeometry(QtCore.QRect(340, 210, 75, 23))
self.pushButton_6.setObjectName("pushButton_6")
self.lineEdit_5 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_5.setGeometry(QtCore.QRect(140, 70, 131, 21))
self.lineEdit_5.setObjectName("lineEdit_5")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(10, 70, 101, 16))
self.label_6.setObjectName("label_6")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(440, 130, 91, 21))
self.label_2.setObjectName("label_2")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(570, 130, 131, 21))
self.lineEdit.setObjectName("lineEdit")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(440, 170, 91, 21))
self.label_7.setObjectName("label_7")
#self.lineEdit_6 = QtWidgets.QLineEdit(self.centralwidget)
#self.lineEdit_6.setGeometry(QtCore.QRect(570, 170, 131, 21))
#self.lineEdit_6.setObjectName("lineEdit_6")
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(440, 210, 91, 21))
self.label_8.setObjectName("label_8")
self.lineEdit_7 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_7.setGeometry(QtCore.QRect(570, 210, 131, 21))
self.lineEdit_7.setObjectName("lineEdit_7")
self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
self.progressBar.setGeometry(QtCore.QRect(20, 280, 631, 16))
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName("progressBar")
self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
self.textBrowser.setGeometry(QtCore.QRect(20, 330, 681, 121))
self.textBrowser.setObjectName("textBrowser")
mainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(mainWindow)
self.statusbar.setObjectName("statusbar")
mainWindow.setStatusBar(self.statusbar)
self.menubar = QtWidgets.QMenuBar(mainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 760, 23))
self.menubar.setObjectName("menubar")
self.menuLuoqi_Patch = QtWidgets.QMenu(self.menubar)
self.menuLuoqi_Patch.setObjectName("menuLuoqi_Patch")
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.setObjectName("menu_3")
mainWindow.setMenuBar(self.menubar)
self.actionopen = QtWidgets.QAction(mainWindow)
self.actionopen.setObjectName("actionopen")
self.actionclose = QtWidgets.QAction(mainWindow)
self.actionclose.setObjectName("actionclose")
self.actionexit = QtWidgets.QAction(mainWindow)
self.actionexit.setObjectName("actionexit")
self.actionFTP = QtWidgets.QAction(mainWindow)
self.actionFTP.setObjectName("actionFTP")
self.actionFTPLogin = QtWidgets.QAction(mainWindow)
self.actionFTPLogin.setObjectName("actionFTPLogin")
self.actionLogin = QtWidgets.QAction(mainWindow)
self.actionLogin.setObjectName("actionLogin")
self.actionLogout = QtWidgets.QAction(mainWindow)
self.actionLogout.setObjectName("actionLogout")
self.menuLuoqi_Patch.addAction(self.actionopen)
self.menuLuoqi_Patch.addAction(self.actionclose)
self.menuLuoqi_Patch.addAction(self.actionexit)
self.menu.addAction(self.actionFTP)
self.menu.addAction(self.actionFTPLogin)
self.menu_2.addAction(self.actionLogin)
self.menu_2.addAction(self.actionLogout)
self.menu_3.addAction(self.actionLogin)
self.menubar.addAction(self.menuLuoqi_Patch.menuAction())
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
self.comboBox.setItemText(0, _translate("mainWindow", "CT1"))
#self.comboBox.setItemText(1, _translate("mainWindow", "CT2"))
self.comboBox.setItemText(1, _translate("mainWindow", "CNC1"))
self.comboBox.setItemText(2, _translate("mainWindow", "ALLSEV"))
self.label.setText(_translate("mainWindow", "请选择大区:"))
self.label_3.setText(_translate("mainWindow", "确认电信1区文件路径"))
#self.label_4.setText(_translate("mainWindow", "确认电信2区文件路径"))
self.label_5.setText(_translate("mainWindow", "确认双线1区文件路径"))
self.pushButton.setText(_translate("mainWindow", "修改版本号"))
self.pushButton_2.setText(_translate("mainWindow", "全部上传"))
self.pushButton_3.setText(_translate("mainWindow", "退出"))
self.pushButton_4.setText(_translate("mainWindow", "选择文件"))
#self.pushButton_5.setText(_translate("mainWindow", "选择文件"))
self.pushButton_6.setText(_translate("mainWindow", "选择文件"))
self.label_6.setText(_translate("mainWindow", "修改版本号为:"))
self.label_2.setText(_translate("mainWindow", "当前版本号为:"))
#self.label_7.setText(_translate("mainWindow", "当前版本号为:"))
self.label_8.setText(_translate("mainWindow", "当前版本号为:"))
self.menuLuoqi_Patch.setTitle(_translate("mainWindow", "文件"))
self.menu.setTitle(_translate("mainWindow", "配置"))
self.menu_2.setTitle(_translate("mainWindow", "查看用户"))
self.menu_3.setTitle(_translate("mainWindow", "关于"))
self.actionopen.setText(_translate("mainWindow", "open"))
self.actionclose.setText(_translate("mainWindow", "close"))
self.actionexit.setText(_translate("mainWindow", "exit"))
self.actionFTP.setText(_translate("mainWindow", "FTP配置文件"))
self.actionFTPLogin.setText(_translate("mainWindow", "FTP链接"))
self.actionLogin.setText(_translate("mainWindow", "Login"))
self.actionLogout.setText(_translate("mainWindow", "Logout"))
self.actionLogin.setText(_translate("mainWindow", "关于软件"))
self.pushButton_4.clicked.connect(self.openfile1)
#self.pushButton_5.clicked.connect(self.openfile2)
self.pushButton_6.clicked.connect(self.openfile3)
self.comboBox.currentIndexChanged.connect(self.bt_ftp)
self.pushButton.clicked.connect(self.change_version)
self.pushButton_3.clicked.connect(self.close_e)
self.actionFTP.triggered.connect(self.openftpfile)
self.actionFTPLogin.triggered.connect(self.ftplogin)
self.pushButton_2.clicked.connect(self.ftplogin)
self.actionLogin.triggered.connect(self.aboutnn)
def aboutnn(self):
win32api.MessageBox(0, "软件版本:1.0, \n COPYRIGHT BY Tiancity", "About APP", win32con.MB_OK)
def por(self,filesize):
for i in range(1, filesize):
self.progressBar.setValue(i)
time.sleep(0.01)
####打开FTP配置文件
def openftpfile(self):
path =(self.cwd +'\\' r'ftplist.ini')
#print(path)
os.system('start notepad '+path)
#os.startfile(path)
def ftplogin(self):
x1 = self.comboBox.currentText()
if x1 == 'ALLSEV':
import configparser
config = configparser.ConfigParser() # 类实例化
path = (self.cwd + '\\' r'ftplist.ini')
config.read(path)
session = config.sections()
for xn in session:
vhost = config.get(xn, 'host')
print(xn)
print(vhost)
vport = config.getint(xn, 'port')
vuser = config.get(xn, 'user')
vpwd = config.get(xn, 'passwd')
vpf = config.get(xn, 'patchfile')
#登入FTP
from ftplib import FTP
buf_size = 1024
ftp = FTP()
ftp.connect(vhost,vport)
ftp.login(vuser,vpwd)
file_name = ftp.nlst()
self.textBrowser.append('正在链接FTP中。。。。'+ ' '+ str(file_name))
self.textBrowser.append(str(xn)+'登入成功。。可以上传文件。。')
pwd_patch = ftp.pwd()
self.textBrowser.append(pwd_patch)
cwd_patch = ftp.cwd('/' + vpf)
self.textBrowser.append(cwd_patch)
patch_fff = []
pn = patch_fff.append(self.lineEdit_2.text())
#pn1 = patch_fff.append(self.lineEdit_3.text())
pn2 = patch_fff.append(self.lineEdit_4.text())
for ii in patch_fff:
if ii == '':
win32api.MessageBox(0, "你的文件未设置,请重新设置。", "ERROR", win32con.MB_OK)
else:
red = re.compile(r'/')
patch_nn = red.split(ii)
print(patch_nn[-1])
# patchname1 = 'patch_gm1.txt'
ftp.delete(patch_nn[-1])
self.textBrowser.append(str(xn)+' ' + patch_nn[-1] + "删除完成,准备上传。。。。")
with open(ii, 'rb') as fp:
ftp.storbinary('STOR %s' % patch_nn[-1], fp, 4096)
ftp.set_debuglevel(0)
self.textBrowser.append(str(xn)+' ' + patch_nn[-1] + "文件更新完成。。。")
ftp.close()
else:
import configparser
config = configparser.ConfigParser() # 类实例化
path = (self.cwd + '\\' r'ftplist.ini')
config.read(path)
vhost = config.get(x1, 'host')
vport = config.getint(x1, 'port')
vuser = config.get(x1, 'user')
vpwd = config.get(x1, 'passwd')
vpf = config.get(x1, 'patchfile')
# 登入FTP
from ftplib import FTP
buf_size = 1024
ftp = FTP()
ftp.connect(vhost, vport)
ftp.login(vuser, vpwd)
file_name = ftp.nlst()
self.textBrowser.append('正在链接FTP中。。。。' + ' ' + str(file_name))
self.textBrowser.append(str(x1)+'登入成功。。可以上传文件。。')
pwd_patch = ftp.pwd()
self.textBrowser.append(pwd_patch)
cwd_patch = ftp.cwd('/' + vpf)
self.textBrowser.append(cwd_patch)
patch_fff = []
pn = patch_fff.append(self.lineEdit_2.text())
#pn1 = patch_fff.append(self.lineEdit_3.text())
pn2 = patch_fff.append(self.lineEdit_4.text())
for ii in patch_fff:
if ii == '':
win32api.MessageBox(0, "你的文件未设置,请重新设置。", "ERROR", win32con.MB_OK)
else:
red = re.compile(r'/')
patch_nn = red.split(ii)
print(patch_nn[-1])
# patchname1 = 'patch_gm1.txt'
ftp.delete(patch_nn[-1])
self.textBrowser.append(str(x1)+' ' +patch_nn[-1] + "删除完成,准备上传。。。。")
with open(ii, 'rb') as fp:
ftp.storbinary('STOR %s' % patch_nn[-1], fp, 4096)
ftp.set_debuglevel(0)
self.textBrowser.append(str(x1) + ' '+ patch_nn[-1] + "文件更新完成。。。")
ftp.close()
####选择电信1patch文件路径并读取版本号
def openfile1(self):
self.file, filename1 = QtWidgets.QFileDialog.getOpenFileName(self.centralwidget, '选择文件', self.cwd,
'Text files(*.txt)')
self.lineEdit_2.setText(self.file)
rd_over = self.lineEdit_2.text()
f = open(r'{}'.format(rd_over), 'r+')
st1 = r'patch_version.*'
for ss in f.readlines():
# print(ss)
tt = re.match(st1, ss)
# print(tt)
if tt != None:
ret = re.split(r'=', str(tt.group()))
# print(ret)
for rr in ret:
# print(rr)
if rr != 'patch_version':
# print(rr)
self.lineEdit.setText(rr)
f.close()
'''
def openfile2(self):
self.file, filename1 = QtWidgets.QFileDialog.getOpenFileName(self.centralwidget, '选择文件', self.cwd,
'Text files(*.txt)')
self.lineEdit_3.setText(self.file)
rd_over = self.lineEdit_3.text()
f = open(r'{}'.format(rd_over), 'r+')
st1 = r'patch_version.*'
for ss in f.readlines():
# print(ss)
tt = re.match(st1, ss)
# print(tt)
if tt != None:
ret = re.split(r'=', str(tt.group()))
# print(ret)
for rr in ret:
# print(rr)
if rr != 'patch_version':
# print(rr)
self.lineEdit_6.setText(rr)
f.close()
'''
def openfile3(self):
self.file, filename1 = QtWidgets.QFileDialog.getOpenFileName(self.centralwidget, '选择文件', self.cwd,
'Text files(*.txt)')
self.lineEdit_4.setText(self.file)
rd_over = self.lineEdit_4.text()
f = open(r'{}'.format(rd_over), 'r+')
st1 = r'patch_version.*'
for ss in f.readlines():
# print(ss)
tt = re.match(st1, ss)
# print(tt)
if tt != None:
ret = re.split(r'=', str(tt.group()))
# print(ret)
for rr in ret:
# print(rr)
if rr != 'patch_version':
# print(rr)
self.lineEdit_7.setText(rr)
f.close()
'''def openfile4(self):
self.file, filename1 = QtWidgets.QFileDialog.getOpenFileName(self.centralwidget, '选择文件', self.cwd,
'Text files(*.txt)')
self.lineEdit_5.setText(self.file)
'''
# 读取FTP信息
def bt_ftp(self):
x1 = self.comboBox.currentText()
# 读取patch旧版本号
# def rd_over(self):
#变更版本号
def change_version(self):
rd_local = self.lineEdit_2.text()
#rd_local1 = self.lineEdit_3.text()
rd_local2 = self.lineEdit_4.text()
old_vv1 = (self.lineEdit.text())
#old_vv2 = (self.lineEdit_6.text())
old_vv3 = (self.lineEdit_7.text())
# print(rd_loacl)
if rd_local != '':
self.change_v(old_vv1, rd_local)
xx1 = self.read_nv(rd_local)
self.lineEdit.setText(xx1)
'''
if rd_local1 != '':
self.change_v(old_vv2, rd_local1)
xx2 = self.read_nv(rd_local1)
self.lineEdit_6.setText(xx2)
'''
if rd_local2 != '':
self.change_v(old_vv3, rd_local2)
xx3 = self.read_nv(rd_local2)
self.lineEdit_7.setText(xx3)
else:
win32api.MessageBox(0, "抱歉第一个路径都为空!!!请选择一个文件!!!", "提醒", win32con.MB_OK)
'''
if rd_local1 != '':
self.change_v(old_vv2, rd_local1)
xx2 = self.read_nv(rd_local1)
self.lineEdit_6.setText(xx2)
'''
if rd_local2 != '':
self.change_v(old_vv3, rd_local2)
xx3 = self.read_nv(rd_local2)
self.lineEdit_7.setText(xx3)
else:
win32api.MessageBox(0, "抱歉第二个路径都为空!!!请选择一个文件!!!", "提醒", win32con.MB_OK)
if rd_local2 != '':
self.change_v(old_vv3, rd_local2)
xx3 = self.read_nv(rd_local2)
self.lineEdit_7.setText(xx3)
else:
win32api.MessageBox(0, "抱歉三个路径都为空!!!请选择一个文件!!!", "提醒", win32con.MB_OK)
return
#print(vv)
#################获取各个不同的版本号,修改
def change_v(self,n,rd):
old_version1 = 'patch_version=' + str(n)
new_version = self.lineEdit_5.text()
new_version1 = 'patch_version=' + str(new_version)
with open(rd, "r", encoding="utf-8") as f1, open("%s.bak" % rd, "w", encoding="utf-8") as f2:
for line in f1:
f2.write(re.sub(old_version1, new_version1, line))
f1.close()
f2.close()
os.remove(rd)
os.rename("%s.bak" % rd, rd)
win32api.MessageBox(0, "修改成功", "提醒", win32con.MB_OK)
def read_nv(self,llj):
f = open(r'{}'.format(llj), 'r+')
st1 = r'patch_version.*'
for ss in f.readlines():
# print(ss)
tt = re.match(st1, ss)
# print(tt)
if tt != None:
ret = re.split(r'=', str(tt.group()))
# print(ret)
for rr in ret:
# print(rr)
if rr != 'patch_version':
print(rr)
return (rr)
f.close()
def close_e(self):
exit(0)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv) # 创建一个QApplication,也就是你要开发的软件app
MainWindow = QtWidgets.QMainWindow() # 创建一个QMainWindow,用来装载你需要的各种组件、控件
ui = Ui_mainWindow() # ui是Ui_MainWindow()类的实例化对象
ui.setupUi(MainWindow) # 执行类中的setupUi方法,方法的参数是第二步中创建的QMainWindow
MainWindow.show() # 执行QMainWindow的show()方法,显示这个QMainWindow
sys.exit(app.exec_()) # 使用exit()或者点击关闭按钮退出QApplicat