commit ef97eb936d3b786c56b908737efc4e69f3d4b138 Author: gfdgd xi <3025613752@qq.com> Date: Thu May 27 21:25:51 2021 +0800 初步完成 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..359bb53 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..a2e120d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ebcb39d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uengine-install.iml b/.idea/uengine-install.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/uengine-install.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/UengineAndroidProgramList.desktop b/UengineAndroidProgramList.desktop new file mode 100644 index 0000000..1b126d3 --- /dev/null +++ b/UengineAndroidProgramList.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Categories=System; +Comment=uengine(anbox) 程序菜单 +Encoding=UTF-8 +Exec=/usr/bin/uengine-launch.sh --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity +Icon=/opt/apps/uengine-runner/icon.png +MimeType= +Name=uengine 程序菜单 +StartupWMClass=uengine 程序菜单 +Terminal=false +Type=Application diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..0ec7233 Binary files /dev/null and b/icon.png differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..f191639 --- /dev/null +++ b/main.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 +# 使用系统默认的 python3 运行 +########################################################################################### +# 作者:gfdgd xi +# 版本:1.0.0 +# 更新时间:2021年 +# 感谢: +# 基于 Python3 的 tkinter 构建 +########################################################################################### +################# +# 引入所需的库 +################# +import os +import sys +import time +import shutil +import threading +import webbrowser +import subprocess +import tkinter as tk +import tkinter.ttk as ttk +import tkinter.messagebox as messagebox +import tkinter.filedialog as filedialog + +def KillAdbProgress(): + Return = GetCommandReturn("killall adb") + if Return is "": + Return = "OK!" + messagebox.showinfo(title="tips", message=Return) + +def Button1Click(): + if combobox2.get() is "": + messagebox.showerror(title="Tips", message="Don't input right things in ComboBox") + return + DisabledAndEnbled(True) + threading.Thread(target=ConnectPhoneIp).start() + +def ConnectPhoneIp(): + messagebox.showinfo(title="tips", message=GetCommandReturn("adb connect '{}'".format(combobox2.get()))) + DisabledAndEnbled(False) + +def FindApk(): + path = filedialog.askopenfilename(title="", filetypes=[("APK 文件", "*.apk"), ("所有文件", "*.*")]) + if path is not None: + combobox1.set(path) + +def Button3Install(): + if combobox1.get() is "": + messagebox.showerror(title="Tips", message="Don't input right things in ComboBox") + return + DisabledAndEnbled(True) + threading.Thread(target=InstallApk, args=(combobox1.get(),)).start() + +def InstallApk(path): + messagebox.showinfo(title="Tips", message=GetCommandReturn("adb install '{}'".format(path))) + DisabledAndEnbled(False) + +def DisabledAndEnbled(choose): + userChoose = {True: tk.DISABLED, False: tk.NORMAL} + a = userChoose[choose] + combobox1.configure(state=a) + combobox2.configure(state=a) + button1.configure(state=a) + button2.configure(state=a) + button3.configure(state=a) + button4.configure(state=a) + +# 需引入 subprocess +def GetCommandReturn(cmd): + # cmd 是要获取输出的命令 + return subprocess.getoutput(cmd) + +def Button5Click(): + threading.Thread(target=OpenUengineProgramList).start() + +def OpenUengineProgramList(): + os.system("/usr/bin/uengine-launch.sh --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity") + +# 显示“关于这个程序”窗口 +def about_this_program(): + global about + messagebox.showinfo(title="关于这个程序", message=about) + +# 显示“提示”窗口 +def helps(): + global tips + messagebox.showinfo(title="提示", message=tips) + +# 显示更新内容窗口 +def UpdateThings(): + messagebox.showinfo(title="更新内容", message=updateThings) + +# 打开程序官网 +def OpenProgramURL(): + webbrowser.open_new_tab(programUrl) + +# 重启本应用程序 +def ReStartProgram(): + python = sys.executable + os.execl(python, python, * sys.argv) + +def CleanProgramHistory(): + if messagebox.askokcancel(title="警告", message="删除后将无法恢复,你确定吗?\n删除后软件将会自动重启。"): + shutil.rmtree(get_home() + "/.config/uengine-runner") + ReStartProgram() + +# 获取用户主目录 +def get_home(): + return os.path.expanduser('~') + +########################### +# 程序信息 +########################### +programUrl = "https://gitee.com/gfdgd-xi/uengine-runner" +version = "1.0.0" +goodRunSystem = "Linux" +about = '''一个基于 Python3 的 tkinter 制作的 +版本:{} +适用平台:{} +tkinter 版本:{} +程序官网:{} +©2021-{} gfdgd xi'''.format(version, goodRunSystem, tk.TkVersion, programUrl, time.strftime("%Y")) +tips = '''提示: +1、None''' +updateThingsString = '''''' +title = "wine 运行器 {}".format(version) +updateTime = "2021年" +updateThings = "{} 更新内容:\n{}\n更新时间:{}".format(version, updateThingsString, updateTime, time.strftime("%Y")) + +window = tk.Tk() +window.title(title) +frame1 = ttk.Frame(window) +frame2 = ttk.Frame(window) +label1 = ttk.Label(window, text="要安装的 apk 路径:") +label2 = ttk.Label(window, text="要连接的设备的 IP:") +combobox1 = ttk.Combobox(window, width=100) +combobox2 = ttk.Combobox(window, width=100) +button1 = ttk.Button(frame1, text="连接设备", command=ConnectPhoneIp) +button2 = ttk.Button(window, text="浏览", command=FindApk) +button3 = ttk.Button(frame2, text="安装", command=Button3Install) +button4 = ttk.Button(frame1, text="Kill Adb Progress", command=KillAdbProgress) +button5 = ttk.Button(frame2, text="Open uengine Program List", command=Button5Click) +menu = tk.Menu(window) # 设置菜单栏 +programmenu = tk.Menu(menu, tearoff=0) # 设置“程序”菜单栏 +menu.add_cascade(label="程序", menu=programmenu) +programmenu.add_command(label="清空软件历史记录", command=CleanProgramHistory) +programmenu.add_separator() # 设置分界线 +programmenu.add_command(label="退出程序", command=window.quit) # 设置“退出程序”项 +help = tk.Menu(menu, tearoff=0) # 设置“帮助”菜单栏 +menu.add_cascade(label="帮助", menu=help) +help.add_command(label="程序官网", command=OpenProgramURL) # 设置“程序官网”项 +help.add_separator() +help.add_command(label="小提示", command=helps) # 设置“小提示”项 +help.add_command(label="更新内容", command=UpdateThings) # 设置“更新内容”项 +help.add_command(label="关于这个程序", command=about_this_program) # 设置“关于这个程序”项 +# 设置控件 +window.config(menu=menu) # 显示菜单栏 +label1.grid(row=2, column=0) +label2.grid(row=0, column=0) +combobox1.grid(row=2, column=1) +combobox2.grid(row=0, column=1) +button1.grid(column=0, row=0) +button2.grid(row=2, column=2) +button3.grid(row=0, column=0) +button4.grid(column=1, row=0) +button5.grid(row=0, column=1) +frame1.grid(row=1, columnspa=3) +frame2.grid(row=3, columnspa=3) +window.mainloop() \ No newline at end of file