import os import sys import threading #import ttkthemes import tkinter as tk import tkinter.ttk as ttk import tkinter.messagebox as messagebox class AddVirtualMachine(): def ShowWindow(): messgae = tk.Toplevel() chooseImageString = tk.StringVar() chooseImageString.set("请选择……") nameTips = tk.Label(messgae, text="虚拟机名称") nameEntry = tk.Entry(messgae, width=50) memoryTips = tk.Label(messgae, text="虚拟机内存分配") memoryDefultValue = tk.Checkbutton(messgae, text="默认值") memoryValue = tk.Scale(messgae, from_=1, orient=tk.HORIZONTAL) chooseImageTips = tk.Label(messgae, text="选择虚拟机镜像:") chooseImage = tk.OptionMenu(messgae, chooseImageString, ["无"]) quicklyFasterSpeed = tk.Checkbutton(messgae, text="启动 kvm 加速") tipsThings = tk.Label(messgae, text="虚拟机备注:") tipsThingsTips = tk.Text(messgae, height=5, width=50) controlFrame = tk.Frame(messgae) cancal = tk.Button(controlFrame ,text="取消") ok = tk.Button(controlFrame, text="确定") messgae.title("添加 Android X86 虚拟机") messgae.resizable(0, 0) memoryValue.set(33) cancal.grid(row=0, column=0) ok.grid(row=0, column=1) nameTips.grid(row=0, column=0) nameEntry.grid(row=0, column=1, columnspan=3) memoryTips.grid(row=1, column=0) memoryDefultValue.grid(row=1, column=1) memoryValue.grid(row=1, column=2) chooseImageTips.grid(row=2, column=0) chooseImage.grid(row=2, column=1) quicklyFasterSpeed.grid(row=2, column=2) tipsThings.grid(row=3, column=0) tipsThingsTips.grid(row=3, column=1, columnspan=3, rowspan=2, sticky=tk.W) controlFrame.grid(row=5, column=3, sticky=tk.E) #controlFrame.grid(row=5, column=2) messgae.mainloop() class DelVirtualMachine(): def Tips(): if messagebox.askokcancel(title="提示", message="你确定要删除此虚拟机吗?\n删除后将无法恢复!"): messagebox.showinfo(title="提示", message="删除完毕!") class AddVirtualImage(): def ShowWindow(): message = tk.Toplevel() urlImageDownloadTips = tk.Label(message, text="可下载镜像:") urlImageDownloadList = ttk.Treeview(message) addImage = tk.Button(message, text="➜") delImage = tk.Button(message, text="-") ImageTips = tk.Label(message, text="已下载镜像:") ImageList = ttk.Treeview(message) ok = tk.Button(message, text="确定") message.title("下载新的镜像") message.resizable(0, 0) urlImageDownloadTips.grid(row=0, column=0, sticky=tk.W) urlImageDownloadList.grid(row=1, column=0, rowspan=4) addImage.grid(row=2, column=1) delImage.grid(row=3, column=1) ImageTips.grid(row=0, column=2, sticky=tk.W) ImageList.grid(row=1, column=2, rowspan=4) ok.grid(row=5, column=2, sticky=tk.E) message.mainloop() class SettingVirtualMachine(): pass def RunVirtualMachine(): threading.Thread(target=os.system, args=["kvm --cdrom {} --hda {} -m {}G".format("", "", "")]).start() window = tk.Tk() virtualMachineList = ttk.Treeview(window) addVirtualMachine = tk.Button(window, text="+", command=AddVirtualMachine.ShowWindow) delVirtualMachine = tk.Button(window, text="-", command=DelVirtualMachine.Tips) addVirtualMachineImage = tk.Button(window, text="⊙", command=AddVirtualImage.ShowWindow) settingVirtualMachine = tk.Button(window, text="⚙️") runVirtualMachine = tk.Button(window, text="➜", command=RunVirtualMachine) tipsThings = tk.Text(window, height=5, width=30) menu = tk.Menu(window) programMenu = tk.Menu(menu, tearoff=0) yuanMenu = tk.Menu(menu, tearoff=0) menu.add_cascade(label="程序", menu=programMenu) menu.add_cascade(label="源", menu=yuanMenu) programMenu.add_command(label="退出程序", command=sys.exit) yuanMenu.add_command(label="更换源") yuanMenu.add_command(label="修改默认源") #window.configure(bg="white") #ttkthemes.ThemedStyle(window).set_theme("ubuntu") window.title("Android X86 Runner") window.resizable(0, 0) window.config(menu=menu) runVirtualMachine.configure(foreground="green") #tipsThings.configure(bg="white", foreground="black", state=tk.DISABLED) virtualMachineList.grid(row=0, column=0, rowspan=3) addVirtualMachine.grid(row=0, column=1) delVirtualMachine.grid(row=0, column=2) addVirtualMachineImage.grid(row=0, column=3) settingVirtualMachine.grid(row=0, column=4) runVirtualMachine.grid(row=0, column=5) tipsThings.grid(row=2, column=1, columnspan=5, sticky=tk.W) window.mainloop()