kvm管理系统UI界面

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()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值