Python图形界面开发神器-page5.0.3安装程序及安装使用教程

1. 软件使用截图

简单的来说,可以通过此软件完成Python图形化界面设计,软件可以自动生成Python代码,省去了大量的调试界面位置的工作。

file

2. 软件下载安装

2.1 Tcl运行环境下载安装

page软件的运行需要基于Tcl环境,所以先安装Tcl是必须的。
官网Tcl官网下载地址:https://www.activestate.com/products/tcl/downloads/
由于官网下载时需要注册认证,所以我下载好了放在本站上以便大家方便使用:
ActiveTcl-8.6.9.8609.2-MSWin32-x64-5ccbd9ac8

注意:
如果通过官网下载的话,官网上有两个Tcl版本可供下载,运行page5.0.3必须下载ActiveTCL8.6才可以,如果安装的是TCL8.5版本运行page5.0.3时会报invalid command name "try"这样一个错误。

下载完成后,先安装,安装没什么可讲,就是普通的安装过程。

2.2 page5.0.3下载安装

官方在SourceForge上,国内下载可能会比较慢:
http://page.sourceforge.net/
当然,我已经下载好了放在本站上了:
page-5.0.3

安装过程也是普通过程,没什么特别需要说明的。

3. 软件使用

3.1 打开软件

打开桌面上的page图标即可打开软件
file

3.2 拖拽布局

通过拖拽实现页面元素布局,页面元素间存在父元素、子元素之间的关系。元素关系树状结构再左下角显示。这个多试几次就知道是怎么运作了。
file

3.3 生成代码

界面布局完成后,点击主界面菜单栏的【Gen_Python】下的【Generate Python GUI】
file
这时会弹出一个保存文件的窗口,保存的是.tcl的布局文件。后期需要对布局进行调整时,只需要打开这个文件就可以继续工作。

3.4 保存代码

3.3保存tcl文件后,就会弹出一个新页面,这个新页面中就是对应的自动生成的python程序代码:
file

点击左下角【save】按钮,就可以将生成的python代码保存到本地,保存位置默认和3.3里面.tcl文件的保存位置一致。
这时,打开3.3步骤里面.tcl文件的保存位置,就会发现一个和.tcl文件同名但扩展名为.py的文件。

3.5 代码修改

默认情况下,直接运行生成的.py文件会报错,主要错误就在

import page_support

page_support.init(root, top)

这两句上,我的做法是直接删除这两句,然后代码就可以正常运行了。

Python查询MySQL数据库并将查询结果输出到csv文件

1. 安装Python链接MySQL插件。

$ pip3 install PyMySQL

2. 完整代码如下:

import os
import pymysql

sku = []

#定义递归函数findPNG,寻找当前目录下所有png类型的文件
def findPNG(sku,dir):
    for ffName in os.listdir(dir):
        if os.path.isfile(dir+"/"+ffName):
            if ffName.split(".")[1] == "png":
                sku.append(ffName.split(".")[0]);
        elif os.path.isdir(dir+"/"+ffName):
            findPNG(sku,dir+"/"+ffName)
findPNG(sku,"./")

h = open("./ProductsInformation.csv","a")
db = pymysql.connect("地址","用户","密码","数据库名" )
cursor = db.cursor()

for s in sku:
    SQL = '''SELECT t1.model,t2.name,t2.tag
             FROM `product` AS t1, `product_description` AS t2
             WHERE t1.product_id = t2.product_id AND t1.model ="{}"'''.format(s)
    cursor.execute(SQL)
    data = cursor.fetchone()
    if data:
        for d in data:
            h.write('"'+d+'",')
        h.write('\n')
    else:
        print(s)

h.close()
db.close()

Python安装时勾选添加PATH环境变量,安装完却无法在cmd使用python命令的解决方法

问题描述

在安装Python的时候,会有个添加环境变量的选项,我们在安装Python的时候一般都会勾选,这样就可以省去手动添加环境变量的麻烦。

然而,安装了多次Python的我却在一次在Windows2008服务器上安装Python的时候遇到了麻烦。同样的安装流程,安装后就是无法在cmd中使用python命令。

查看了下环境变量,python的两个路径也加到PATH环境变量中去了。那为啥还是不能使用呢?

原因

还好我比较幸运,一下子发现了问题。
原来,在安装Python之前,服务器中已经有了Path环境变量,且里面已经有了相关的内容。然后,Python不知怎么搞的又建了一个环境变量名为全大写的PATH。
然而我们都知道,Windows中是不区分大小写的,也就是说服务器中已经存在的Path和新建的PATH产生了冲突。

解决

找到了原因,解决方法就很简单了。将新建的PATH变量中的内容加到之前已经存在的Path变量的末尾就好了。

【Python每日一练】JSON和CSV处理练习

JSON练习

3.1 导入population.json数据,并格式化输出中国China的人口数据。

下载:population.json

CSV联系

3.2 使用with导入population.csv数据,并输出中国China的人口数据。

下载:population.csv

答案

3.1

import json
fileURL = "population.json"
r = open(fileURL,"r")
popData = json.load(r)
for country in popData:
    if country["Country"] == "China":
        country = json.dumps(country,indent=1)
        print(country)

3.2

import csv
fileURL = "population.csv"
with open(fileURL) as f:
    f_csv = csv.reader(f)
    for row in f_csv:
        if row[0] == "China":
            print(row)

【Python每日一练】文件IO和函数

Python文件IO练习

2.1 创建文件夹和文件

创建文件夹fileset,并在fileset里面生成20个.txt文件。
Txt文件名为1-20.txt,txt内的内容为当天时间+文件名。

2.2 文件IO

将上面20个文件的内容合并到一个新文件all.txt中。
并将all.txt中的内容逐行输出。

2.3 文件删除和函数

定义一个deleteDir函数,删除上面的fileset文件夹,连同里面的所有文件。

答案

2.1

import os
import datetime
folderUrl = "fileset"
if not os.path.exists(folderUrl):
    os.mkdir(folderUrl)
for i in range(1,21):
    f = open("fileset\\"+str(i)+".txt","w")
    f.write(str(datetime.datetime.now())+" "+str(i)+".txt")
    f.close()

2.2

import os
folderUrl = "fileset"
fileSet = os.listdir(folderUrl)
w = open("all.txt","w")
for fileName in fileSet:
    r = open(folderUrl + "\\" + fileName, "r")
    w.write(r.read()+"\r\n")
    r.close()
w.close()
r = open("all.txt","r")
for line in r:
    print(line)
r.close()

2.3

import os
def deleteDir(folderURL):
    for fileName in os.listdir(folderURL):
        os.remove(folderURL+"\\"+fileName)
    os.rmdir(folderURL)

deleteDir("fileset")

【Python每日一练】基本语法练习

为啥要练?

作为一名coder,应该尽可能多的了解各种主流编程语言和技术体系。然而,无论这个coder多牛,其在实际工作中常用的技术和语言也是有限的。然而,任何一门语言和技术,无论你曾经精通到何种程度,放下几个月不用,再拿起来也会生疏。
所以呢,对于自己喜欢的语言和技术,我喜欢总结一些简单的练习题,有空就简单的联系一下,这样可以保持对这门语言或技术的热度。

【Python基本语法】练习题

1.1 创建一个拥有20个元素的随机列表并输出。

随机列表的元素为1-1000间的整数。
随机列表输出时采用升序右对齐输出。

1.2 创建一个拥有20个元素的随机元祖并输出。

随机元祖的元素为1-1000位随机数字+1随机英文字母组合。
随机元祖输出时升序排序并采用右对齐输出。

1.3 创建一个拥有20个键值对的随机字典并输出。

随机字典的键为1-1000的随机整数,随机字典的值为4位随机英文字母组合。
随机字典键输出时按键升序排序,并采用左对齐方式。

1.4 创建两个随机集合,并计算输出。

创建一个拥有50个元素的随机集合A。随机集合元素内容为1-100的随机整数。
创建一个拥有50个元素的随机集合B。随机集合元素内容为1-100的随机整数。

计算并输出:
集合A
集合B
集合A-集合B
集合B-集合A
集合A+集合B

答案:

1.1

import random
listVar = []
for i in range(0,20):
    listVar.append(random.randint(1,1000))
listVar.sort()
for i in range(0,20):
    print((str(listVar[i])).rjust(4))

1.2

import random
import string
varList = []
for i in range(0,20):
    randomChar = string.ascii_lowercase
    varList.append(str(random.randrange(1,1000)) + random.choice(randomChar))
varList.sort()
varTuple = tuple(varList)
for i in range(1,20):
    print(varTuple[i].rjust(5))

1.3

import random
import string
randomDict = {}
while 1==1:
    key = random.randint(1,1000)
    value = random.choices(string.ascii_uppercase,k=4)
    randomDict[key] = "".join(value)
    if len(randomDict) == 20:
        break
for key in sorted(randomDict):
    print(str(key).rjust(4) + "->" + randomDict[key])

1.4

import random
aSet = set()
bSet = set()
while 1==1:
    aSet.add(random.randint(1,100))
    if len(aSet) == 50:
        break
while 1==1:
    bSet.add(random.randint(1,100))
    if len(bSet) == 50:
        break
print(aSet)
print(bSet)
print(aSet-bSet)
print(bSet-aSet)
print(aSet.union(bSet))