这段代码使用了Tkinter库创建了一个简单的图形界面,用于执行SVN操作。主要功能包括:
- 更新SVN:执行
TortoiseProc.exe
命令的更新操作。 - 清理SVN:执行
TortoiseProc.exe
命令的清理操作。 - 查看日志:执行
TortoiseProc.exe
命令的查看日志操作。 - 还原SVN:执行
TortoiseProc.exe
命令的还原操作。 - 重新定位:执行
TortoiseProc.exe
命令的重新定位操作。 - 帮助:执行
TortoiseProc.exe
命令的帮助操作。
代码使用了多线程来处理按钮点击事件,避免界面卡死。界面中的输入框用于输入SVN地址,按钮点击后会执行相应的操作,并在底部的文本框中显示操作结果。
需要注意的是,这段代码需要依赖TortoiseProc.exe
,这是TortoiseSVN的可执行文件,它需要在系统中正确配置才能正常运行。代码中使用的是Windows系统的命令行操作。在运行之前,确保TortoiseProc.exe
在系统的环境变量中或者与脚本同一目录下。
此外,代码中使用了threading
库来创建多线程,确保界面在操作时不会卡死。需要注意多线程可能带来的线程安全问题。
import os
import tkinter as tk
import threading
import time
def gengxi1():
t.delete(1.0, tk.END)
with open('C:\gjg\svn.txt', 'w') as f:
f.write(txt.get())
b = txt.get()
print(b)
try:
c=os.system("TortoiseProc.exe /command:update /path:"+'"'+b+'"'+"/closeonend:1")
except:
print('更新失败')
t.insert('end','更新失败')
else:
if c==0:
print('更新成功')
t.insert('end', '更新成功')
a=(time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime()))
t.insert('end',a)
else:
print('更新失败')
t.insert('end', '更新失败')
def qingli():
t.delete(1.0, tk.END)
with open(r'C:\gjg\svn.txt', 'w') as f:
f.write(txt.get())
b = txt.get()
print(b)
try:
c = os.system("TortoiseProc.exe /command:cleanup /path:" + '"' + b + '"' + "/closeonend:1")
except:
t.insert('end', '清理失败')
else:
if c == 0:
t.insert('end', '清理成功')
else:
t.insert('end', '清理失败')
def rizhi():
t.delete(1.0, tk.END)
with open(r'C:\gjg\svn.txt', 'w') as f:
f.write(txt.get())
b = txt.get()
os.system("TortoiseProc.exe /command:log /path:" + '"' + b + '"' + "/closeonend:1")
def huanyuan():
t.delete(1.0, tk.END)
with open(r'C:\gjg\svn.txt', 'w') as f:
f.write(txt.get())
b = txt.get()
print(b)
os.system("TortoiseProc.exe /command:revert /path:" + '"' + b + '"' + "/closeonend:1")
a = (time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime()))
t.insert('end', a)
def dingwei():
t.delete(1.0, tk.END)
with open(r'C:\gjg\svn.txt', 'w') as f:
f.write(txt.get())
b = txt.get()
print(b)
os.system("TortoiseProc.exe /command:relocate /path:" + '"' + b + '"' + "/closeonend:1")
def bangzhu():
t.delete(1.0, tk.END)
with open(r'C:\gjg\svn.txt', 'w') as f:
f.write(txt.get())
b = txt.get()
print(b)
os.system("TortoiseProc.exe /command:help /path:" + '"' + b + '"' + "/closeonend:1")
def thread_it(func, *args):
'''将函数打包进线程'''
k = threading.Thread(target=func, args=args)
k.setDaemon(True)
k.start()
if __name__ == '__main__':
window=tk.Tk()
window.title('SVN')
window.geometry("200x250")
if not os.path.exists("C:/gjg"):
os.mkdir("C:/gjg")
try:
with open('C:\gjg\svn.txt', "r") as f:
e1=f.read()
print(e1)
except:
e1='地址,多个地址用*分隔'
t= tk.Text(window,width = '250', height=11,bg = 'LightBlue')
t.pack(side = 'bottom')
btn1 = tk.Button(window, text="更新svn", bg="orange", command=lambda: thread_it(gengxi1))
btn1.place(x=1, y=40)
btn2 = tk.Button(window, text="清理svn", bg="orange", command=qingli)
btn2.place(x=60, y=40)
btn3 = tk.Button(window, text="查看日志", bg="orange", command=lambda: thread_it(rizhi))
btn3.place(x=120, y=40)
btn4 = tk.Button(window, text="还原svn", bg="orange", command=lambda: thread_it(huanyuan))
btn4.place(x=1, y=70)
btn5 = tk.Button(window, text="重新定位", bg="orange", command=lambda: thread_it(dingwei))
btn5.place(x=60, y=70)
btn6 = tk.Button(window, text="帮助", bg="orange", command=lambda: thread_it(bangzhu))
btn6.place(x=130, y=70)
e1 = tk.StringVar(value=e1)
txt = tk.Entry(window, width=30,textvariable = e1)
txt.place(x =1,y=10)
window.mainloop()
评论前必须登录!
注册