首页 > 编程语言 >练手python脚本分享

练手python脚本分享

时间:2023-11-08 22:32:05浏览次数:42  
标签:练手 __ resultview python self vm column 分享 anchor

分享一个最近练手的脚本,没什么实际意义,纯粹就是练手用的,最近准备把python拿出来再练练,所以随意找了点东西研究下,脚本里主要用到了ttkbootstrap来做GUI,以及非常非常基础的azure python的SDK

import datetime
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
from ttkbootstrap import utility

from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient



class Sample(ttk.Frame):
    def __init__(self, master):
        super().__init__(master, padding=15)
        self.pack(fill=BOTH, expand=YES) 
        option_text = "Virtual Machines in Subscription"
        self.option_lf = ttk.Labelframe(self, text=option_text, padding=15)
        self.option_lf.pack(fill=X, expand=YES, anchor=N)
        self.vm_client=VirtualMachines(subscription_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx")
        self.vms=self.vm_client.get_all_vms()
        self.create_tree_view()
        self.create_button()

    
    def create_tree_view(self):
        self.resultview = ttk.Treeview(
            master=self.option_lf, 
            bootstyle=INFO, 
            columns=[0, 1, 2, 3, 4],
            show=HEADINGS
        )
        self.resultview.pack(fill=BOTH, expand=YES, pady=10)
        self.resultview.heading(0, text='VM Name', anchor=W)
        self.resultview.heading(1, text='Resource Group Name', anchor=W)
        self.resultview.heading(2, text='Location', anchor=E)
        self.resultview.heading(3, text='OS', anchor=E)
        self.resultview.heading(4, text='Size', anchor=W)
        
        self.resultview.column(
            column=0, 
            anchor=W, 
            width=utility.scale_size(self, 125), 
            stretch=False
        )
        self.resultview.column(
            column=1, 
            anchor=W, 
            width=utility.scale_size(self, 140), 
            stretch=False
        )
        self.resultview.column(
            column=2, 
            anchor=E, 
            width=utility.scale_size(self, 50), 
            stretch=False
        )
        self.resultview.column(
            column=3, 
            anchor=E, 
            width=utility.scale_size(self, 50), 
            stretch=False
        )
        self.resultview.column(
            column=4, 
            anchor=W, 
            width=utility.scale_size(self, 300)
        )
    
    def create_button(self):
        self.button=ttk.Button(
            master=self, 
            text='Show VM',
            command=self.on_click
        )
        self.button.pack(fill=X, expand=YES, pady=10)
    
    def on_click(self):

        for vm in self.vms:
            vm_rg=vm.id.split("/")[4]
            vm_os_fun=lambda x: "Windows" if x.os_profile.linux_configuration == None else "Linux"
            vm_os=vm_os_fun(vm)
            vm_size=vm.hardware_profile.vm_size
            iid = self.resultview.insert(
            parent='', 
            index=END, 
            values=(vm.name, vm_rg, vm.location, vm_os, vm_size)
    )
        self.resultview.selection_set(iid)
        self.resultview.see(iid)

class VirtualMachines:
    def __init__(self, subscription_id, cloud="Global"):
        self.subscription_id = subscription_id
        if cloud == "Global":
            self.compute_client=ComputeManagementClient(
                subscription_id=self.subscription_id,
                credential=DefaultAzureCredential()
                                            )
        elif cloud == "China":
            self.compute_client=ComputeManagementClient(
                subscription_id=self.subscription_id,
                credential=DefaultAzureCredential(),
                base_url="https://management.chinacloudapi.cn"
                
        )
        else:
            raise "unsupport cloud"

    def get_all_vms(self):
        return self.compute_client.virtual_machines.list_all()


if __name__ == '__main__':
    app = ttk.Window("Virtual Machine Engine", "journal")
    Sample(app)
    app.mainloop()

要用的话,首先要有az cli,然后先用cli登录,因为脚本里是直接用defaultcredential,所以需要用环境变量或者直接用cli登录,登录之后,会有个GUI显示出来,点击show VM的button,会读出来subscription下的VM

练手python脚本分享_bootstrap

基本就是这么个东西,没有实际意义,纯粹就是练手~

标签:练手,__,resultview,python,self,vm,column,分享,anchor
From: https://blog.51cto.com/mxyit/8260922

相关文章

  • Python中的列表和元组:添加、修改和删除元素的技巧
    在Python中,列表(List)和元组(Tuple)都是用于存储数据的集合类型。虽然它们在某些方面相似,例如都可以存储各种类型的数据,但它们也有一些重要的区别,比如可变性。列表是可变的,意味着我们可以更改、添加或删除列表中的元素,而元组是不可变的,一旦它被创建,就不能更改。在这篇文章中,我们将详细......
  • Python 数据库应用教程:安装 MySQL 及使用 MySQL Connector
    Python可以用于数据库应用程序。其中最流行的数据库之一是MySQL。MySQL数据库为了能够在本教程中尝试代码示例,您应该在计算机上安装MySQL。您可以在MySQL官方网站下载MySQL数据库。安装MySQL驱动程序Python需要一个MySQL驱动程序来访问MySQL数据库。在本教程中,我们将使用"......
  • 以多个文件的名称为基准复制其他路径下的同名文件:Python实现
      本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件的名称,从另一个文件夹中找到与这一文件夹中文件同名的文件,并将找到的同名文件复制到第三个文件夹中的方法。  首先,我们来明确一下本文的具体需求。现有一个文件夹,其中有大量的Excel表格文件(在......
  • Python如何将日志输入到文件里
    要将日志输出到文件中,你可以使用Python标准库的`logging`模块。以下是一个示例,演示如何配置`logging`模块来记录日志到文件:```pythonimportlogging#配置日志log_file='/path/to/your/logfile.log'logging.basicConfig(  filename=log_file,  level=logging.DEBU......
  • Python 数据库应用教程:安装 MySQL 及使用 MySQL Connector
    Python可以用于数据库应用程序。其中最流行的数据库之一是MySQL。MySQL数据库为了能够在本教程中尝试代码示例,您应该在计算机上安装MySQL。您可以在MySQL官方网站下载MySQL数据库。安装MySQL驱动程序Python需要一个MySQL驱动程序来访问MySQL数据库。在本教程中,我们将使用......
  • 【django开发】知识经验总结共50页md文档。今日分享:django配置和数据库操作详解
    Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原......
  • python循环遍历字典: title_content_list.append([key, value])print(ti
    示例示例Python循环遍历字典的方法有以下几种:使用for...in循环:Python循环遍历字典的方法有以下几种:1.使用for...in循环:pythondict={'name':'Tom','age':20,'gender':'male'}#遍历所有的键forkeyindict:print(key)#遍历所有的值forvalueindict.values......
  • python语言合法命名规则:my_first_python_program
    示例示例Python语言合法命名规则:命名只能使用字母、数字和下划线,不能使用其他符号;Python语言合法命名规则:1.命名只能使用字母、数字和下划线,不能使用其他符号;2.不能以数字开头;3.不能使用Python关键字;4.命名应该有意义,尽量不要使用缩写;5.命名应该具有可读性,尽量使用驼峰命名法,......
  • ios软件开发教程与代码分享!
    在这个数字化时代,移动设备已经成为人们生活中不可或缺的一部分,而iOS作为一款优秀的移动操作系统,拥有庞大的用户基础和广阔的市场前景。因此,掌握iOS软件开发对于企业和开发者来说具有重要意义,本文将介绍iOS软件开发的基础知识,并通过实际案例分享相关代码,帮助读者更好地理解和应用。......
  • Python调用C动态库并通过bytes传参
    通过Python内建库ctypes调用C语言。#!/usr/bin/python3#file:bytes_test.pyimportctypesasctimportos#编译C程序为动态库os.system("gcc-fpic-sharedbytes_test.c-obytes_test.dll")#加载动态库clib=ct.CDLL("./bytes_test.dll")#分配内存src=b......