from tkinter import *
import tkinter as tk
import libvirt
from VMManager import VMManager
from tkinter import ttk
class Application(tk.Frame):
# Application构造函数,master为窗口的父控件
def __init__(self, master=None):
# 初始化Application的Frame部分
tk.Frame.__init__(self, master)
self.conn1 = libvirt.open("qemu+tcp://192.168.169.2/system")
self.conn2 = libvirt.open("qemu+tcp://192.168.169.3/system")
self.vm = VMManager()
self.grid()
self.Input()
self.window_init()
self.var = StringVar()
self.show()
self.Column()
self.ButtonAll()
def window_init(self):
self.master.title("KVM 管 理 平 台")
self.master.geometry('960x640')
def show(self):
self.l = Label(self.master, textvariable=self.var, bg='white', fg='black', font=('Arial', 12))
self.l.place(relx=0.1, rely=0.6, width=200, height=200)
def Input(self):
self.Input = Entry(self.master)
self.Input.place(relx=0.1, rely=0.5, width=200, height=40)
def Column(self):
self.tree = ttk.Treeview(self.master, show="headings", height=18, columns=("ip", "name_part", "status"))
self.tree.column("ip", width=200)
self.tree.column("name_part", width=200)
self.tree.column("status", width=200)
self.tree.heading("ip", text="ip")
self.tree.heading("name_part", text="name_part")
self.tree.heading("status", text="status")
self.tree.place(relx=0.1, rely=0.1, width=760, height=200)
def ButtonAll(self):
self.bttn1 = Button(self.master, text="显示虚拟机状态", bg='white', relief='raised', font=('Arial', 12),
command=lambda: self.ShowVirtualMachine())
self.bttn1.place(relx=0.4, rely=0.5, width=200, height=60)
self.bttn2 = Button(self.master, text="创建虚拟机", bg='white', relief='raised', font=('Arial', 12),
command=lambda: self.CreateVirtualMachine())
self.bttn2.place(relx=0.65, rely=0.5, width=200, height=60)
self.bttn3 = Button(self.master, text="删除虚拟机", bg='white', relief='raised', font=('Arial', 12),
command=lambda: self.DeleteVirtualMachine())
self.bttn3.place(relx = 0.4, rely = 0.6, width = 200, height = 60)
self.bttn4 = Button(self.master, text="启动虚拟机", bg='white', relief='raised', font=('Arial', 12),
command=lambda: self.StartVirtualMachine())
self.bttn4.place(relx=0.65, rely=0.6, width=200, height=60)
self.bttn5 = Button(self.master, text="挂起虚拟机", bg='white', relief='raised', font=('Arial', 12),
command=lambda: self.SuspendVirtualMachine())
self.bttn5.place(relx=0.4, rely=0.7, width=200, height=60)
self.bttn6 = Button(self.master, text="运行虚拟机", bg='white', relief='raised', font=('Arial', 12),
command=lambda: self.ResumeVirtualMachine())
self.bttn6.place(relx=0.65, rely=0.7, width=200, height=60)
self.bttn7 = Button(self.master, text="关闭虚拟机", bg='white', relief='raised', font=('Arial', 12),
command=lambda: self.ShutOffVirtualMachine())
self.bttn7.place(relx=0.4, rely=0.8, width=200, height=60)
self.bttn8=Button(self.master, text="初始化虚拟机", bg='white', relief='raised', font=('Arial', 12),
command=lambda: self.InitializeVirtualMachine())
self.bttn8.place(relx=0.65, rely=0.8, width=200, height=60)
def deltree(self):
x = self.tree.get_children()
for item in x:
self.tree.delete(item)
def ShowVirtualMachine(self):
self.deltree()
# self.MachineOne()
# self.MachineTwo()
ip_list, name_list, state_list = self.vm.listDom()
for i in range(len(ip_list)):
self.tree.insert("", i, text="", values=(ip_list[i], name_list[i], state_list[i]))
def CreateVirtualMachine(self):
Name=self.Input.get()
try:
self.vm.createVM(Name)
self.var.set("虚拟机"+Name+"创建成功!")
except:
self.var.set("虚拟机未命名或已存在\n,创建失败!")
self.ShowVirtualMachine()
def DeleteVirtualMachine(self):
Name=self.Input.get()
try:
self.vm.unDefine(Name)
self.var.set("虚拟机" + Name + "删除成功!")
except:
self.var.set("未输入虚拟机名称或虚\n拟机不存在,删除失败!")
self.ShowVirtualMachine()
def StartVirtualMachine(self):
Name = self.Input.get()
try:
self.vm.start(Name)
self.var.set("虚拟机" + Name + "启动成功!")
except:
self.var.set("未输入虚拟机名称、\n虚拟机不存在、\n虚拟机已启动\n启动失败!")
self.ShowVirtualMachine()
def SuspendVirtualMachine(self):
Name = self.Input.get()
try:
self.vm.suspend(Name)
self.var.set("虚拟机" + Name + "挂起成功!")
except:
self.var.set("未输入虚拟机名称、\n虚拟机不存在、\n虚拟机已挂起\n挂起失败!")
self.ShowVirtualMachine()
def ResumeVirtualMachine(self):
Name = self.Input.get()
try:
self.vm.resume(Name)
self.var.set("虚拟机" + Name + "运行成功!")
except:
self.var.set("未输入虚拟机名称、\n虚拟机不存在、\n虚拟机已运行\n运行失败!")
self.ShowVirtualMachine()
def ShutOffVirtualMachine(self):
Name = self.Input.get()
try:
self.vm.shutoff(Name)
self.var.set("虚拟机" + Name + "关闭成功!")
except:
self.var.set("未输入虚拟机名称、\n虚拟机不存在、\n虚拟机已关闭\n关闭失败!")
self.ShowVirtualMachine()
def InitializeVirtualMachine(self):
Name = self.Input.get()
try:
message=self.vm.initVM(Name)
if message:
self.var.set("虚拟机初始化成功")
else:
self.var.set("虚拟机初始化失败")
except:
self.var.set("虚拟机初始化失败")
if __name__ == "__main__":
app = Application()
app.mainloop()
kvm管理系统UI界面
最新推荐文章于 2024-05-10 10:34:16 发布