2021-08-19 14:08:05 +08:00
|
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
# 使用系统默认的 python3 运行
|
|
|
|
|
###########################################################################################
|
|
|
|
|
# 作者:gfdgd xi
|
2021-09-11 15:51:23 +08:00
|
|
|
|
# 版本:1.4.3
|
|
|
|
|
# 更新时间:2021年9月11日
|
2021-08-19 14:08:05 +08:00
|
|
|
|
# 感谢:anbox、deepin 和 统信
|
|
|
|
|
# 基于 Python3 的 tkinter 构建
|
|
|
|
|
###########################################################################################
|
|
|
|
|
#################
|
|
|
|
|
# 引入所需的库
|
|
|
|
|
#################
|
|
|
|
|
import os
|
2021-09-11 15:51:23 +08:00
|
|
|
|
import threading
|
2021-08-19 14:08:05 +08:00
|
|
|
|
import time
|
|
|
|
|
import json
|
|
|
|
|
import ttkthemes
|
|
|
|
|
import subprocess
|
|
|
|
|
import tkinter as tk
|
|
|
|
|
import tkinter.ttk as ttk
|
|
|
|
|
|
|
|
|
|
# 读取文本文档
|
|
|
|
|
def readtxt(path: "路径")->"读取文本文档":
|
|
|
|
|
f = open(path, "r") # 设置文件对象
|
|
|
|
|
str = f.read() # 获取内容
|
|
|
|
|
f.close() # 关闭文本对象
|
|
|
|
|
return str # 返回结果
|
|
|
|
|
|
|
|
|
|
###########################
|
|
|
|
|
# 程序信息
|
|
|
|
|
###########################
|
|
|
|
|
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
|
|
|
|
information = json.loads(readtxt(programPath + "/information.json"))
|
|
|
|
|
programUrl = information["Url"][0]
|
|
|
|
|
version = information["Version"]
|
|
|
|
|
goodRunSystem = information["System"]
|
|
|
|
|
aaptVersion = subprocess.getoutput("aapt version")
|
2021-08-30 17:49:12 +08:00
|
|
|
|
about = '''介绍 :一个基于 Python3 的 tkinter 制作的 UEngine 运行器,在新版本Deepin/UOS发布后,可以在应用商店安装部分官方已适配的安卓应用,对爱好者来说,不能自己安装APK软件包始终差点意思,本程序可以为Deepin/UOS上的UEngine安卓运行环境安装自定义APK软件包,并能发送安装的APK包启动菜单到桌面或系统菜单。
|
2021-08-19 14:08:05 +08:00
|
|
|
|
|
|
|
|
|
版本 :{}
|
|
|
|
|
|
|
|
|
|
适用平台 :{}
|
|
|
|
|
|
|
|
|
|
程序官网 :{}
|
|
|
|
|
|
2021-08-30 17:49:12 +08:00
|
|
|
|
©2021-{}'''.format(version, goodRunSystem, tk.TkVersion, programUrl, time.strftime("%Y"))
|
2021-08-19 14:08:05 +08:00
|
|
|
|
tips = "\n".join(information["Tips"])
|
|
|
|
|
updateThingsString = "\n".join(information["Update"])
|
2021-08-30 17:49:12 +08:00
|
|
|
|
title = "UEngine 运行器 {}".format(version)
|
2021-08-19 14:08:05 +08:00
|
|
|
|
updateTime = information["Time"]
|
|
|
|
|
updateThings = "{} 更新内容:\n{}\n更新时间:{}".format(version, updateThingsString, updateTime, time.strftime("%Y"))
|
2022-02-07 22:35:15 +08:00
|
|
|
|
iconPath = "{}/runner.png".format(os.path.split(os.path.realpath(__file__))[0])
|
2021-08-19 14:08:05 +08:00
|
|
|
|
desktop = "/opt/apps/uengine-runner/UengineAndroidProgramList.desktop"
|
|
|
|
|
desktopName = "UengineAndroidProgramList.desktop"
|
|
|
|
|
contribute = "\n".join(information["Contribute"])
|
2021-09-11 15:51:23 +08:00
|
|
|
|
useProgram = ""
|
|
|
|
|
threading.Thread(target=useProgram).start()
|
|
|
|
|
|
|
|
|
|
# add sub window
|
|
|
|
|
#添加窗口开启关闭开关,防止重复开启
|
|
|
|
|
windowflag = "close"
|
|
|
|
|
|
|
|
|
|
def UseProgram():
|
|
|
|
|
global useProgram
|
|
|
|
|
useProgram = '''1、UEngine:{}
|
2021-08-30 17:49:12 +08:00
|
|
|
|
2、python3:{}
|
|
|
|
|
3、tkinter:{}
|
|
|
|
|
4、aapt:{}
|
|
|
|
|
5、dpkg:{}
|
|
|
|
|
6、mkdir:{}
|
|
|
|
|
7、echo
|
|
|
|
|
8、chmod:{}
|
|
|
|
|
9、adb:{}
|
|
|
|
|
10、deepin 终端:{}'''.format(subprocess.getoutput("uengine version"),
|
|
|
|
|
subprocess.getoutput("python3 --version"),
|
|
|
|
|
tk.TkVersion,
|
|
|
|
|
subprocess.getoutput("aapt version"),
|
|
|
|
|
subprocess.getoutput("dpkg --version"),
|
|
|
|
|
subprocess.getoutput("mkdir --version"),
|
|
|
|
|
subprocess.getoutput("chmod --version"),
|
|
|
|
|
subprocess.getoutput("adb version"),
|
|
|
|
|
subprocess.getoutput("deepin-terminal -v"))
|
2021-08-19 14:08:05 +08:00
|
|
|
|
|
|
|
|
|
def showhelp():
|
|
|
|
|
|
|
|
|
|
#define window and frame and button label
|
|
|
|
|
#
|
|
|
|
|
global windowflag
|
|
|
|
|
if windowflag == "close":
|
|
|
|
|
helpwindow=tk.Tk()
|
|
|
|
|
helpwindow.resizable(0, 0)
|
|
|
|
|
helpwindow.title("帮助")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# get screen width and height
|
|
|
|
|
screen_width = helpwindow.winfo_screenwidth()
|
|
|
|
|
screen_height = helpwindow.winfo_screenheight()
|
|
|
|
|
# calculate position x and y coordinates 假设主窗口大小固定 570x236像素 ,设置窗口位置为屏幕中心。
|
|
|
|
|
winwith=550
|
|
|
|
|
winhigh=700
|
|
|
|
|
x = (screen_width/2) - (winwith/2)
|
|
|
|
|
y = (screen_height/2) - (winhigh/2)
|
|
|
|
|
|
|
|
|
|
helpwindow.geometry("550x700"+"+{:.0f}+{:.0f}".format(x, y))
|
|
|
|
|
helpwindow.iconphoto(False, tk.PhotoImage(file=iconPath))
|
|
|
|
|
|
|
|
|
|
style = ttkthemes.ThemedStyle(helpwindow)
|
|
|
|
|
style.set_theme("breeze")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Frmroot=ttk.Frame(helpwindow)
|
|
|
|
|
FrmMenu = ttk.Frame(Frmroot)
|
|
|
|
|
FrmText = ttk.Frame(Frmroot)
|
|
|
|
|
|
|
|
|
|
LabFrmText=ttk.LabelFrame(FrmText,text="帮助",height=800,borderwidth=3)
|
|
|
|
|
HelpStr = tk.StringVar()
|
|
|
|
|
HelpStr.set(tips)
|
|
|
|
|
LabText = ttk.Label(LabFrmText, textvariable=HelpStr,width=55)
|
|
|
|
|
LabText.config(wraplength=350)
|
|
|
|
|
|
|
|
|
|
def on_closing():
|
|
|
|
|
global windowflag
|
|
|
|
|
windowflag = "close"
|
|
|
|
|
print(windowflag)
|
|
|
|
|
helpwindow.destroy()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# define button func
|
|
|
|
|
def ChgLog():
|
|
|
|
|
HelpStr.set(updateThingsString)
|
|
|
|
|
def ChgAbout():
|
|
|
|
|
HelpStr.set(about)
|
|
|
|
|
def ChgDep():
|
2021-09-11 15:51:23 +08:00
|
|
|
|
if useProgram == "":
|
|
|
|
|
BtnZujian.configure(state=tk.DISABLED)
|
|
|
|
|
return
|
2021-08-19 14:08:05 +08:00
|
|
|
|
HelpStr.set(useProgram)
|
|
|
|
|
def ChgCon():
|
|
|
|
|
HelpStr.set(contribute)
|
|
|
|
|
def ChgTips():
|
|
|
|
|
HelpStr.set(tips)
|
|
|
|
|
LabText.config(wraplength=350)
|
|
|
|
|
|
|
|
|
|
BtnReadme = ttk.Button(FrmMenu, text="使用说明",width=14,command=ChgTips)
|
|
|
|
|
BtnLog = ttk.Button(FrmMenu, text="更新内容",width=14,command=ChgLog)
|
|
|
|
|
BtnZujian = ttk.Button(FrmMenu, text="程序依赖的组件",width=14,command=ChgDep)
|
|
|
|
|
BtnGongxian = ttk.Button(FrmMenu, text="有贡献的开发者",width=14,command=ChgCon)
|
|
|
|
|
BtnAbout = ttk.Button(FrmMenu, text="关于",width=14,command=ChgAbout)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#layout
|
|
|
|
|
FrmMenu.grid(row=0,column=0,sticky=tk.NW)
|
|
|
|
|
BtnReadme.grid(row=0,column=0,sticky=tk.NW,padx=3)
|
|
|
|
|
BtnLog.grid(row=1,column=0,sticky=tk.NW,padx=3)
|
|
|
|
|
BtnZujian.grid(row=2,column=0,sticky=tk.NW,padx=3)
|
|
|
|
|
BtnGongxian.grid(row=3,column=0,sticky=tk.NW,padx=3)
|
|
|
|
|
BtnAbout.grid(row=4,column=0,sticky=tk.NW,padx=3)
|
|
|
|
|
|
|
|
|
|
FrmText.grid(row=0,column=1,sticky=tk.NW)
|
|
|
|
|
LabFrmText.grid(row=0,column=0,sticky=tk.NW,padx=3,pady=3)
|
|
|
|
|
LabText.grid(row=0,column=0,sticky=tk.NW)
|
|
|
|
|
|
|
|
|
|
Frmroot.pack()
|
|
|
|
|
windowflag = "open"
|
|
|
|
|
print(windowflag)
|
|
|
|
|
helpwindow.mainloop()
|
|
|
|
|
#helpwindow.protocol("WM_DELETE_WINDOW", on_closing)
|
|
|
|
|
showhelp()
|