快捷搜索:

权限管理系统之字典,获取城市天气的Python脚本

2019-11-13 09:57栏目:关于澳门金莎
TAG:

原文 一段Python实现的获取城市天气的代码,供大家娱乐参考。。

4.5 代码(字典)管理

系统代码是平台内置的、通用的、统一的数据描述。

代码管理(数据字典)是整个平台中数据描述的有效机制。通过界面进行可视化的操作和维护,能快速录入和修改平台上统一的字典数据。有效提高了数据的重复利用率和产品、项目的开发效率。整个数据字典数据为框架平台所共享,用户可以更好地对系统进行自定义管理,以满足自己的个性化需求。

代码管理的功能作业区(用户操作)界面如下图4.5-1所示,通过主要的操作按钮和信息内容可知其功能有:

① 新增代码组、代码,编辑代码组、代码,
② 删除代码组、代码,移动代码,
③ 代码组、代码的唯一标识,排序功能和备注信息等。

其中功能操作按钮的状态会根据选择的左侧树型中不同节点和不同登录用户的动作权限而改变。

平台在目前仅支持二级深度的树型代码结构,可根据实际需要进行添加、修改、删除或移动等对平台代码进行分类和调整。

图片 1 

图4.5-1  代码管理界面

#region LoadCodeTypes, LoadCodes
        private void LoadCodeTypes(TreeNode currentNode, DMESYS_SYSCODE_TYPE currentCodeType)
        {
            List<DMESYS_SYSCODE_TYPE> subCodeTypes = null;
            if (currentCodeType != null)
                subCodeTypes = DBOSYS_SYSCODE_TYPE.GetSubCodeTypes(currentCodeType);
            else
                subCodeTypes = DBOSYS_SYSCODE_TYPE.GetSYS_SYSCODE_TYPEEntities();

            foreach (DMESYS_SYSCODE_TYPE rt in subCodeTypes)
            {
                TreeNode node = currentNode.ChildNodes.Add();
                node.Tag = rt;
                node.Text = rt.Name;
                node.CollapsedImageIndex = 1;
                node.ExpandedImageIndex = 2;

                LoadCodeTypes(node, rt);
            }
        }

        private void LoadCodes()
        {
            codes.Clear();
            codes = DBOSYS_SYSCODE.GetSYS_SYSCODEEntities();

            foreach (DMESYS_SYSCODE r in codes)
            {
                TreeNode tn = CallFindNode(r.Syscode_Type_Id, tvCodes);
                if (tn != null)
                {
                    TreeNode node = tn.ChildNodes.Add();
                    node.Tag = r;
                    node.Text = r.Name;
                    node.CollapsedImageIndex = 3;
                    node.ExpandedImageIndex = 3;
                }
            }
        }

        private TreeNode FindTreeNode(string codeTypeId, TreeNode tnParent)
        {
            if (tnParent == null || tnParent.Tag is DMESYS_SYSCODE)
                return null;
            if ((tnParent.Tag as DMESYS_SYSCODE_TYPE).Id == codeTypeId)
                return tnParent;
            TreeNode tnRet = null;
            foreach (TreeNode tn in tnParent.ChildNodes)
            {
                tnRet = FindTreeNode(codeTypeId, tn);
                if (tnRet != null)
                    break;
            }
            return tnRet;
        }

        private TreeNode CallFindNode(string codeTypeId, TreeControl treeView)
        {
            TreeNodeCollection nodes = treeView.RootNodes[0].ChildNodes;
            foreach (TreeNode n in nodes)
            {
                TreeNode temp = FindTreeNode(codeTypeId, n);
                if (temp != null)
                    return temp;
            }
            return null;
        }
        #endregion

 

关于java中普通代码块、构造代码块与静态代码块,java构造代码静态

1.普通代码块

public static void main(String[] args) {
/*普通代码块:
*直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。
*普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行”
* */
{
  System.out.println("这里是普通代码块A");
}
//new A();
{
  System.out.println("这里是普通代码块B");
}
}

执行结果:这里是普通代码块A
     这里是普通代码块B

2.静态代码块与构造代码块

在java中使用static关键字声明的代码块。常用于对类的初始化,每个静态代码块只会执行一次(类在内存中加载时执行,类在内存中加载后类已经存在)由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行。

ps:1 静态代码块不能存在于任何方法体内。2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。

构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。

public class structure {
{
System.out.println("这里是普通代码块");//所有类中有一个默认的构造函数,这里的代码块为构造代码块,在类中的对象被创建时执行
}
public static void main(String[] args) {

/*普通代码块:
*直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。
*普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行”
* */
{
System.out.println("这里是普通代码块A");
}
new structure();//第二次类加载时静态代码块不执行
//new A();
{
System.out.println("这里是普通代码块B");
}
}

static{
System.out.println("这里是静态代码块");
}
}

执行结果:

这里是静态代码块//优先于主函数
这里是普通代码块A
这里是普通代码块//类中的对象被创建时执行,每创建一次执行一次,在加一句new structure(); 执行结果为: 图片 2             

这里是普通代码块B

3.概要总结

public class structure {
{
System.out.println("这里是普通代码块");
}
public static void main(String[] args) {
{
System.out.println("这里是普通代码块A");
}
//new structure();
//new structure();
new A();
{
System.out.println("这里是普通代码块B");
}
}
static{
System.out.println("这里是静态代码块");
}
}
class A{
static{
System.out.println("这里是A中的普静态代码块1");
}
{
System.out.println("这里是A中的普通代码块1");
}
{
System.out.println("这里是A中的普通代码块2");
}

}

执行结果:

这里是静态代码块
这里是普通代码块A
这里是A中的普静态代码块1
这里是A中的普通代码块1
这里是A中的普通代码块2
这里是普通代码块B

优先级总结:静态代码块>Main()>构造代码块

1.普通代码块 public static void main(String[] args) { /*普通代码块: *直接定义在...

具体代码如下:

4.5.1 新增、编辑和删除

新增代码组和代码:点击展开树形菜单“系统代码”,可以看到平台内置的一部分代码组和代码。选择“系统代码”后点击“新增分类”按钮,可以添加代码组;选择已有的代码组,点击“新增代码”按钮,可以添加具体的代码。

在新增代码组或代码的过程中,其中带红色星号标记“*”的条目,标识、名称和排序ID是必须要填写的内容。平台会检测该代码组或代码的标识、名称在平台上的合法性,确保代码组或代码的标识、名称的唯一性和可用性。

具体添加代码组、代码的操作界面如下图4.5.1-1所示:

 图片 3

 图片 4

图4.5.1-1  新增代码组、代码

private void InfoUpdatedADD()
        {
            if (dmeObj == null)
            {
                lbInfo.Text = "在“系统代码”下新增如下代码分类";
                return;
            }

            if (dmeObj != null && dmeObj is DMESYS_SYSCODE_TYPE)
            {
                dmeCodeType = dmeObj as DMESYS_SYSCODE_TYPE;
                lbInfo.Text = "在代码分类“" + dmeCodeType.Name + "”下新增如下代码";
                return;
            }
        }

        private bool InfoUpdatedEDIT()
        {
            if (dmeObj == null)
            {
                lbInfo.Text = "加载代码类型信息时出错!";
                lbInfo.ForeColor = Color.Red;
                ucCodes.IsEnabled(false);
                return false;
            }

            if (dmeObj != null && dmeObj is DMESYS_SYSCODE_TYPE)
            {
                dmeCodeType = dmeObj as DMESYS_SYSCODE_TYPE;
                lbInfo.Text = "编辑代码分类“" + dmeCodeType.Name + "”";
                return true;
            }

            if (dmeObj != null && dmeObj is DMESYS_SYSCODE)
            {
                dmeCode = dmeObj as DMESYS_SYSCODE;
                lbInfo.Text = "编辑代码“" + dmeCode.Name + "”";
                return true;
            }

            return false;
        }

        private bool InsertorUpdateCodes()
        {
            if (dmeCode == null)
            {
                dmeCode = new DMESYS_SYSCODE();
            }

            if (dmeCodeType == null)
            {
                dmeCodeType = new DMESYS_SYSCODE_TYPE();
            }

            if (action == Action.ADD)
            {
                if (dmeObj == null && DoValidatedCodes())
                {
                    dmeCodeType.Id = FeiQing.DBO.DBOService.GetID();
                    DBOSYS_SYSCODE_TYPE.InsertDMESYS_SYSCODE_TYPE(dmeCodeType);
                    return true;
                }
                if (dmeObj is DMESYS_SYSCODE_TYPE && DoValidatedCodes())
                {
                    dmeCode.Syscode_Type_Id = dmeCodeType.Id;
                    dmeCode.Id = FeiQing.DBO.DBOService.GetID();
                    DBOSYS_SYSCODE.InsertDMESYS_SYSCODE(dmeCode);
                    return true;
                }
                return false;
            }

            if (action == Action.EDIT)
            {
                if (dmeObj is DMESYS_SYSCODE_TYPE && DoValidatedCodes())
                {
                    dmeCodeType.Id = (dmeObj as DMESYS_SYSCODE_TYPE).Id;
                    DBOSYS_SYSCODE_TYPE.UpdateDMESYS_SYSCODE_TYPE(dmeCodeType);
                    return true;
                }
                if (dmeObj is DMESYS_SYSCODE && DoValidatedCodes())
                {
                    dmeCode.Id = (dmeCode as DMESYS_SYSCODE).Id;
                    DBOSYS_SYSCODE.UpdateDMESYS_SYSCODE(dmeCode);
                    return true;
                }
                return false;
            }

            return false;
        }

        private bool DoValidatedCodes()
        {
            if (String.IsNullOrEmpty(ucCodes.LbTxtTag))
            {
                lbTip.Text = "“标识”不能为空。";
                lbTip.ForeColor = Color.Red;
                return false;
            }
            if (String.IsNullOrEmpty(ucCodes.LbTxtName))
            {
                lbTip.Text = "“名称”不能为空。";
                lbTip.ForeColor = Color.Red;
                return false;
            }
            if (String.IsNullOrEmpty(ucCodes.LbTxtOrder))
            {
                lbTip.Text = "“排序ID”不能为空。";
                lbTip.ForeColor = Color.Red;
                return false;
            }
            if (!FeiQing.Util.DataValidator2.IsNumber(ucCodes.LbTxtOrder))
            {
                lbTip.Text = "“排序ID”必须为数值。";
                lbTip.ForeColor = Color.Red;
                return false;
            }

            if (dmeObj == null && dmeCodeType != null && action == Action.ADD)
            {
                dmeCodeType.Tag = ucCodes.LbTxtTag;
                dmeCodeType.Name = ucCodes.LbTxtName;
                dmeCodeType.Order_Id = Int32.Parse(ucCodes.LbTxtOrder);
                dmeCodeType.Remark = ucCodes.LbTxtRemark;
            }
            if (dmeObj is DMESYS_SYSCODE_TYPE && dmeCode != null && action == Action.ADD)
            {
                dmeCode.Tag = ucCodes.LbTxtTag;
                dmeCode.Name = ucCodes.LbTxtName;
                dmeCode.Order_Id = Int32.Parse(ucCodes.LbTxtOrder);
                dmeCode.Remark = ucCodes.LbTxtRemark;
            }
            if (dmeObj is DMESYS_SYSCODE_TYPE && dmeCodeType != null && action == Action.EDIT)
            {
                dmeCodeType.Tag = ucCodes.LbTxtTag;
                dmeCodeType.Name = ucCodes.LbTxtName;
                dmeCodeType.Order_Id = Int32.Parse(ucCodes.LbTxtOrder);
                dmeCodeType.Remark = ucCodes.LbTxtRemark;
            }
            if (dmeObj is DMESYS_SYSCODE && dmeCode != null && action == Action.EDIT)
            {
                dmeCode.Tag = ucCodes.LbTxtTag;
                dmeCode.Name = ucCodes.LbTxtName;
                dmeCode.Order_Id = Int32.Parse(ucCodes.LbTxtOrder);
                dmeCode.Remark = ucCodes.LbTxtRemark;
            }

            return true;
        }

 

编辑代码组和代码:主要是在代码组或代码的标识,名称,排序,备注等信息发生变更的情况时进行的编辑操作。点击展开树形菜单“系统代码”,在树型目录下选择一个代码组或者代码后点击“编辑”按钮,即完成对应代码组或代码信息的修改。具体编辑代码组、代码的操作界面如下图4.5.1-2中所示:

 图片 5

图4.5.1-2  编辑代码组、代码

 

删除代码组和代码:点击展开树形菜单“系统代码”,在树型目录下选择一个代码组或代码后点击“删除”按钮,图4.5.1-3显示了删除操作的提示对话框界面。

备注:对于拥有代码的代码组是无法直接删除的,首先需要删除其下属的代码。

 图片 6

 图片 7

图4.5.1-3  删除代码组或代码提示

 

private void btnDelete_Click(object sender, System.EventArgs e)
        {
            if (IsCodeType())
            {
                if (selectedNode.ChildNodes.Count > 0)
                {
                    GUIHelper.MessageToUserInfo("提示:该代码分类包含代码,无法直接删除!");
                    return;
                }
                if (GUIHelper.MessageQuestion("确定要删除代码分类“" + (selectedObj as DMESYS_SYSCODE_TYPE).Name + "”吗?", "删除代码分类"))
                {
                    DBOSYS_SYSCODE_TYPE.DeleteDMESYS_SYSCODE_TYPE(selectedObj as DMESYS_SYSCODE_TYPE);
                    btnRefresh_Click(sender, e);
                    return;
                }
            }
            if (IsCode())
            {
                if (GUIHelper.MessageQuestion("确定要删除代码“" + (selectedObj as DMESYS_SYSCODE).Name + "”吗?", "删除代码"))
                {
                    DBOSYS_SYSCODE.DeleteDMESYS_SYSCODE(selectedObj as DMESYS_SYSCODE);
                    btnRefresh_Click(sender, e);
                    return;
                }
            }
        }

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# import requests
import urllib
import json
import sys
from datetime import datetime, timedelta
base_url = "http://api.worldweatheronline.com/free/v2/weather.ashx"
codes = {'113': 'iconSunny',
     '116': 'iconPartlyCloudy',
     "119": 'iconCloudy',
     '122': 'iconVeryCloudy',
     '143': 'iconFog',
     '176': 'iconLightShowers',
     '179': 'iconLightSleetShowers',
     '182': 'iconLightSleet',
     '185': 'iconLightSleet',
     '200': 'iconThunderyShowers',
     '227': 'iconLightSnow',
     '230': 'iconHeavySnow',
     '248': 'iconFog',
     '260': 'iconFog',
     '263': 'iconLightShowers',
     '266': 'iconLightRain',
     '281': 'iconLightSleet',
     '284': 'iconLightSleet',
     '293': 'iconLightRain',
     '296': 'iconLightRain',
     '299': 'iconHeavyShowers',
     '302': 'iconHeavyRain',
     '305': 'iconHeavyShowers',
     '308': 'iconHeavyRain',
     '311': 'iconLightSleet',
     '314': 'iconLightSleet',
     '317': 'iconLightSleet',
     '320': 'iconLightSnow',
     '323': 'iconLightSnowShowers',
     '326': 'iconLightSnowShowers',
     '329': 'iconHeavySnow',
     '332': 'iconHeavySnow',
     '335': 'iconHeavySnowShowers',
     '338': 'iconHeavySnow',
     '350': 'iconLightSleet',
     '353': 'iconLightShowers',
     '356': 'iconHeavyShowers',
     '359': 'iconHeavyRain',
     '362': 'iconLightSleetShowers',
     '365': 'iconLightSleetShowers',
     '368': 'iconLightSnowShowers',
     '371': 'iconHeavySnowShowers',
     '374': 'iconLightSleetShowers',
     '377': 'iconLightSleet',
     '386': 'iconThunderyShowers',
     '389': 'iconThunderyHeavyRain',
     '392': 'iconThunderySnowShowers',
     '395': 'iconHeavySnowShowers'
     }
icons = {
  'iconSunny': [
    '33[38;5;226m \   /  33[0m',
    '33[38;5;226m  .-.     33[0m',
    '33[38;5;226m  ― (   ) ―  33[0m',
    '33[38;5;226m  `-’     33[0m',
    '33[38;5;226m /   \  33[0m'],
  'iconPartlyCloudy': [
    "33[38;5;226m   \  /33[0m    ",
    "33[38;5;226m _ /""33[38;5;250m.-.    33[0m",
    "33[38;5;226m   \_33[38;5;250m(   ).  33[0m",
    "33[38;5;226m   /33[38;5;250m(___(__) 33[0m",
    "            "],
  'iconCloudy': [
    "            ",
    "33[38;5;250m  .--.   33[0m",
    "33[38;5;250m  .-(    ).  33[0m",
    "33[38;5;250m (___.__)__) 33[0m",
    "            "],
  'iconVeryCloudy': [
    "            ",
    "33[38;5;240;1m    .--.   33[0m",
    "33[38;5;240;1m  .-(  ).  33[0m",
    "33[38;5;240;1m (___.__)__) 33[0m",
    "            "],
  'iconLightShowers': [
    "33[38;5;226m _`/""33[38;5;250m.-.    33[0m",
    "33[38;5;226m  ,\_33[38;5;250m(   ).  33[0m",
    "33[38;5;226m   /33[38;5;250m(___(__) 33[0m",
    "33[38;5;111m  ‘ ‘ ‘ ‘ 33[0m",
    "33[38;5;111m ‘ ‘ ‘ ‘  33[0m"],
  'iconHeavyShowers': [
    "33[38;5;226m _`/""33[38;5;240;1m.-.  33[0m",
    "33[38;5;226m  ,\_33[38;5;240;1m(   ).  33[0m",
    "33[38;5;226m   /33[38;5;240;1m(___(__) 33[0m",
    "33[38;5;21;1m   ‚‘‚‘‚‘‚‘  33[0m",
    "33[38;5;21;1m   ‚’‚’‚’‚’  33[0m"],
  'iconLightSnowShowers': [
    "33[38;5;226m _`/""33[38;5;250m.-.    33[0m",
    "33[38;5;226m  ,\_33[38;5;250m(   ).  33[0m",
    "33[38;5;226m   /33[38;5;250m(___(__) 33[0m",
    "33[38;5;255m  *  *  * 33[0m",
    "33[38;5;255m *  *  *  33[0m"],
  'iconHeavySnowShowers': [
    "33[38;5;226m _`/""33[38;5;240;1m.-.  33[0m",
    "33[38;5;226m  ,\_33[38;5;240;1m(   ).  33[0m",
    "33[38;5;226m   /33[38;5;240;1m(___(__) 33[0m",
    "33[38;5;255;1m   * * * *  33[0m",
    "33[38;5;255;1m   * * * *   33[0m"],
  'iconLightSleetShowers': [
    "33[38;5;226m _`/""33[38;5;250m.-.    33[0m",
    "33[38;5;226m  ,\_33[38;5;250m(   ).  33[0m",
    "33[38;5;226m   /33[38;5;250m(___(__) 33[0m",
    "33[38;5;111m  ‘ 33[38;5;255m*33[38;5;111m ‘ 33[38;5;255m* 33[0m",
    "33[38;5;255m *33[38;5;111m ‘ 33[38;5;255m*33[38;5;111m ‘  33[0m"],
  'iconThunderyShowers': [
    "33[38;5;226m _`/""33[38;5;250m.-.    33[0m",
    "33[38;5;226m  ,\_33[38;5;250m(   ).  33[0m",
    "33[38;5;226m   /33[38;5;250m(___(__) 33[0m",
    "33[38;5;228;5m   ⚡33[38;5;111;25m‘ ‘33[38;5;228;5m⚡33[38;5;111;25m‘ ‘ 33[0m",
    "33[38;5;111m ‘ ‘ ‘ ‘  33[0m"],
  'iconThunderyHeavyRain': [
    "33[38;5;240;1m    .-.     33[0m",
    "33[38;5;240;1m   (   ).   33[0m",
    "33[38;5;240;1m   (___(__)  33[0m",
    "33[38;5;21;1m  ‚‘33[38;5;228;5m⚡33[38;5;21;25m‘‚33[38;5;228;5m⚡33[38;5;21;25m‚‘   33[0m",
    "33[38;5;21;1m  ‚’‚’33[38;5;228;5m⚡33[38;5;21;25m’‚’   33[0m"],
  'iconThunderySnowShowers': [
    "33[38;5;226m _`/""33[38;5;250m.-.    33[0m",
    "33[38;5;226m  ,\_33[38;5;250m(   ).  33[0m",
    "33[38;5;226m   /33[38;5;250m(___(__) 33[0m",
    "33[38;5;255m  *33[38;5;228;5m⚡33[38;5;255;25m *33[38;5;228;5m⚡33[38;5;255;25m * 33[0m",
    "33[38;5;255m *  *  *  33[0m"],
  'iconLightRain': [
    "33[38;5;250m  .-.     33[0m",
    "33[38;5;250m (   ).   33[0m",
    "33[38;5;250m   (___(__)  33[0m",
    "33[38;5;111m ‘ ‘ ‘ ‘  33[0m",
    "33[38;5;111m   ‘ ‘ ‘ ‘   33[0m"],
  'iconHeavyRain': [
    "33[38;5;240;1m    .-.     33[0m",
    "33[38;5;240;1m   (   ).   33[0m",
    "33[38;5;240;1m   (___(__)  33[0m",
    "33[38;5;21;1m  ‚‘‚‘‚‘‚‘   33[0m",
    "33[38;5;21;1m  ‚’‚’‚’‚’   33[0m"],
  'iconLightSnow': [
    "33[38;5;250m  .-.     33[0m",
    "33[38;5;250m (   ).   33[0m",
    "33[38;5;250m   (___(__)  33[0m",
    "33[38;5;255m *  *  *  33[0m",
    "33[38;5;255m   *  *  *   33[0m"],
  'iconHeavySnow': [
    "33[38;5;240;1m    .-.     33[0m",
    "33[38;5;240;1m   (   ).   33[0m",
    "33[38;5;240;1m   (___(__)  33[0m",
    "33[38;5;255;1m   * * * *   33[0m",
    "33[38;5;255;1m  * * * *  33[0m"],
  'iconLightSleet': [
    "33[38;5;250m  .-.     33[0m",
    "33[38;5;250m (   ).   33[0m",
    "33[38;5;250m   (___(__)  33[0m",
    "33[38;5;111m ‘ 33[38;5;255m*33[38;5;111m ‘ 33[38;5;255m*  33[0m",
    "33[38;5;255m   *33[38;5;111m ‘ 33[38;5;255m*33[38;5;111m ‘   33[0m"],
  'iconFog': [
    "            ",
    "33[38;5;251m _ - _ - _ - 33[0m",
    "33[38;5;251m  _ - _ - _  33[0m",
    "33[38;5;251m _ - _ - _ - 33[0m",
    "            "],
  'iconUnknown': [
    "   .-.   ",
    "    __)     ",
    "   (       ",
    "    `-’     ",
    "     •   "]
  }
windDir = {
  "N":   "33[1m↓33[0m",
  "NNE": "33[1m↓33[0m",
  "NE":  "33[1m↙33[0m",
  "ENE": "33[1m↙33[0m",
  "E":   "33[1m←33[0m",
  "ESE": "33[1m←33[0m",
  "SE":  "33[1m↖33[0m",
  "SSE": "33[1m↖33[0m",
  "S":   "33[1m↑33[0m",
  "SSW": "33[1m↑33[0m",
  "SW":  "33[1m↗33[0m",
  "WSW": "33[1m↗33[0m",
  "W":   "33[1m→33[0m",
  "WNW": "33[1m→33[0m",
  "NW":  "33[1m↘33[0m",
  "NNW": "33[1m↘33[0m",
}
class Query(object):
    def __init__(self, day, city):
        self.day = day
        self.time = [3,4,5,6]
        self.weatherCode = ''
        self.weather = ''
        self.date = ''
        self.hourly = ''
        self.tempC = 0
        self.winddir16Point = ''
        self.windspeedKmph = 0
        self.humidity = 0
        self.chanceofwater = 0
        self.city = city
    def query(self):
        # 使用resquests
        # p={"q":"%s"%self.city, "num_of_days":3, "format":"json", "key":"55f1fdd05fba23be0a18043d0a017", "lang":"zh"}
        # response=requests.get(base_url,params=p)
        # json_string = response.text
        #使用urllib
        url = base_url + "?key=55f1fdd05fba23be0a18043d0a017&amp;q=%s#_of_days=3&amp;format=json⟨=zh" % self.city
        response = urllib.urlopen(url)
        json_string = response.read()
        parsed_json = json.loads(json_string)
        data = parsed_json['data']            # 获取所有数据
        try:
            self.weather = data['weather'][self.day]            # 获取天气预报,[]内0代表当天,1代表明天,以此类推。
        except KeyError:
            print "33[1;31;49m" + "请输入正确的城市或地区!" + "33[0m"
            sys.exit()
        self.date = self.weather['date']
    def detail(self, time):
        self.hourly = self.weather['hourly'][time]         # 获取小时数据,time:100-1500
        self.weatherCode = self.hourly['weatherCode']
        self.tempC = self.hourly['tempC']
        self.winddir16Point = self.hourly['winddir16Point']
        self.windspeedKmph = self.hourly['windspeedKmph']
        self.chanceofrain = self.hourly['chanceofrain']
        self.chanceofsnow = self.hourly['chanceofsnow']
        self.humidity = self.hourly['humidity']
        self.chanceofwater = int(self.chanceofrain) if int(self.chanceofrain) > int(self.chanceofsnow) else int(self.chanceofsnow)
    def printSingle(self):
        l1 = l2 = l3 = l4 = l5 = ''
        for time in self.time:
            self.detail(time)
            l1 += '│' + icons[codes[self.weatherCode]][0] + self.hourly['lang_zh'][0]['value'].encode("utf-8") + 'tt' if len(self.hourly['lang_zh'][0]['value'].encode("utf-8")) <= 12 else '│' + icons[codes[self.weatherCode]][0] + self.hourly['lang_zh'][0]['value'].encode("utf-8") + 't'
            l2 += '│' + icons[codes[self.weatherCode]][1] + temp_color(self.tempC) + "&deg;C"+'tt'
            l3 += '│' + icons[codes[self.weatherCode]][2] + windDir[self.winddir16Point]+" "+ wind_color(self.windspeedKmph) + "km/h" + 'tt'
            l4 += '│' + icons[codes[self.weatherCode]][3] + "降水概率:" + str(self.chanceofwater) + "%" + 't'
            l5 += '│' + icons[codes[self.weatherCode]][4] + "湿度:" + str(self.humidity) + "%" + 'tt'
        print l1+"│"
        print l2+"│"
        print l3+"│"
        print l4+"│"
        print l5+"│"
    def printDay(self, delta):
        date_time = datetime.strftime(datetime.today() + timedelta(days=delta),"%Y-%m-%d")
        line1 = "                                                        ┌─────────────┐                                                       "
        line2 = "┌───────────────────────────────┬──────────────────────────%s───────────────────────────┬───────────────────────────────┐" % date_time
        line3 = "│         Morning           │           Noon      └──────┬──────┘  Evening          │          Night             │"
        line4 = "├───────────────────────────────┼───────────────────────────────┼───────────────────────────────┼───────────────────────────────┤"
        endline= "└───────────────────────────────┴───────────────────────────────┴───────────────────────────────┴───────────────────────────────┘"
        print line1
        print line2
        print line3
        print line4
        self.printSingle()
        print endline
def temp_color(temp):
    if temp >= 35 or temp <= -10:
        color = "33[1;31;49m" + str(temp) + "33[0m"
    elif (temp >= 25 and temp <35):
        color = "33[1;33;49m" + str(temp) + "33[0m"
    elif temp > 10 and temp < 25:
        color = "33[1;32;49m" + str(temp) + "33[0m"
    elif temp >-10 and temp <= 10:
        color = "33[1;34;49m" + str(temp) + "33[0m"
    return color
def wind_color(windspeed):
    if windspeed <= 5:
        color = "33[1;32;49m" + str(windspeed) + "33[0m"
    elif windspeed > 5 and windspeed <=10:
        color = "33[1;33;49m" + str(windspeed) + "33[0m"
    else:
        color = "33[1;34;49m" + str(windspeed) + "33[0m"
    return color
def main():
    try:
        city = sys.argv[1]
    except IndexError:
        print "33[1;31;49m" + "请输入您要查询的城市或地区:" + "33[0m"
        city = raw_input()
        if city == '':
            sys.exit()
    day = [0,1,2]
    for i in day:
        query = Query(i,city)
        query.query()
        query.printDay(i)
if __name__ == "__main__":
    main()

4.5.2 移动代码

点击展开树形菜单“系统代码”,选择一个代码后点击“移动”按钮,如下图4.5.2-1中所示,选择需要移动到的目标代码组,点击确认,即可完成代码的调动。目前平台上只支持代码移动,代码组暂时不支持移动。

 图片 8

图4.5.2-1  移动代码

#region LoadCodeTypes
        private void LoadCodeTypes(TreeNode currentNode, DMESYS_SYSCODE_TYPE currentCodeType)
        {
            List<DMESYS_SYSCODE_TYPE> subCodeTypes = null;
            if (currentCodeType != null)
                subCodeTypes = DBOSYS_SYSCODE_TYPE.GetSubCodeTypes(currentCodeType);
            else
                subCodeTypes = DBOSYS_SYSCODE_TYPE.GetSYS_SYSCODE_TYPEEntities();

            foreach (DMESYS_SYSCODE_TYPE rt in subCodeTypes)
            {
                TreeNode node = currentNode.ChildNodes.Add();
                node.Tag = rt;
                node.Text = rt.Name;
                node.CollapsedImageIndex = 1;
                node.ExpandedImageIndex = 2;

                LoadCodeTypes(node, rt);
            }
        }
        #endregion

        private bool MoveCode()
        {
            if (destObj == null)
            {
                lbTip.Visible = true;
                return false;
            }

            if (destObj is DMESYS_SYSCODE_TYPE)
            {
                target.Syscode_Type_Id = (destObj as DMESYS_SYSCODE_TYPE).Id;
                DBOSYS_SYSCODE.UpdateDMESYS_SYSCODE(target);
                return true;
            }

            return false;
        }

 

 

运行效果如图:

版权声明:本文由澳门金莎娱乐发布于关于澳门金莎,转载请注明出处:权限管理系统之字典,获取城市天气的Python脚本