某培训学员总结Python入门知识合集,厚着脸皮讨要过来分享了!

某培训学员总结Python入门知识合集,厚着脸皮讨要过来分享了!

暑假没回家 ,一不小心培训了python,反正免费的不听白不听,总比呆在寝室无聊好的多,庆幸的是坚持下来了,现在回想起来虽然学习时间很短,但确实感触蛮大的,因此写这篇文章总结一下。第一节课就被授课者吓到了,python处理TB级的数据,是Hadoopj级别的,而拥有者能力的语言只有R,Ruby等少数语言,以后用几个库Scipy,Numpy,Matplotlib,可以做数值计算等,Matlab的绝大部分功能都可以用python写出来 ,与MATLAB相比,Python是一门更易学、更严谨的程序设计语言。它能让用户编写出更易读、易维护的代码。能不能别再吓我的,我的小心脏受不了~~这里主要是以经典的python为例,即python2.x,另外听说EVE主要是用python写的~~,不得不说有点难以置性。

首先接触python就被它的另类所吓到了,啥,简单粗暴没括号,吓死我了。那怎么玩啊,在python中没有分号,单引号和双引号是不区分的,不像C中单个字符用单引号,字符串用双引号。python的代码段是靠缩进来表示的,不能用大括号。通过四个空格符或一个Tab键即可,不过在函数开头后应有冒号,来表示下面的代码是其内部的内容。其次有些条件语句中的括号是可以省略的,如: if a>b:(Tab)...当然加了括号也正确。而且不用写main函数,也不用导入isotream或是stdio.h之类的库。

某培训学员总结Python入门知识合集,厚着脸皮讨要过来分享了!

Python 简介

1.免费开源

2.简单易学

3.解释性语言,与C/C++等编译性语言不同

4. 可移植,这个估计是流行起来的很重要的一个因素吧。python的程序都可以无需任何修改地移植到现今主流的系统平台上。包括Windows,Linux,Macintosh,Solaris,OS/2,Android等等

5.同是支持面向对象和面向过程编程,类似C++。至于其面向对象的编程,python还有世界上最强大的类库。

6.嵌入性:可以作为脚本语言嵌入到其他程序中,比如C/C++

7.可扩展性:python开发周期短,由于python是基于c开发的,所以用C/C++来编写Python的扩展,现在也有支持Java实现的Jpython。

8.丰富的类库:

9.内存管理器

这个特别棒,再也不用要先给变量申请内存了,也不用想着用完后释放等等这些麻烦死了的东西。

10.python的应用有系统编程,图形处理,数字处理,文本处理,数据库编程,网络编程,Web编程,多媒体应用,他们也用python写串口之类的。。

关于python版本的问题

我想很多人都会果断用最新的python3.4.1(写文章时是2014.7.31,估计几年后如果这篇文章有幸被别人看到,对方肯定会呵呵的),人都是这样,喜欢最新版本的。但是python3.x和python2.x不兼容,也就是说你写的python3.x的程序不能在python2.x IDEL中运行,反过来也是如此。很多库不支持python3.0之后的版本,很多扩展库都没有,你还怎么快乐玩耍。。比如python语言web框架的Django就不支持。再说了网上很多优秀代码都是用python2.x写的,优秀的代码直接拿过来用就可以了,你自己写的费事费时,还不一定好用。看到一本书上的建议:目前大多数的应用是python2.5/2.6居多。windows建议学2.6,Linux就玩2.5,怪不得前几天有个人在群里说他还在用2.5,估计是玩Linux的。在本人学习时,他们授课是用python2.7.8的,是python2.x的最新版本(此时python3.x的最新版本是python3.4.1)。还是那句话吧,python2和python3并不是100%不兼容,只不过语法上做了一些修缮,更加精炼罢了。会python2的人对python3是不感冒的。

下面是python的print问题:

书上明明写的是print 'hello world',会出错,必须写成print ('hello world'),其实这就是版本问题,前一种是python2的语法,后一种是pyhton3的语法。书上大部分是python2,所以如果你用python3的话,很多资料的代码你都要进行改写,很是麻烦。

一些基本内容

1.round是四舍五入的函数,如round(-9.1)=-9,round(10.7)=11

2.赋值可以多个同时进行,如a,b=3,6,而且类似a<b<7,运行显示True。a<7<b,运行显示False。这一点与C不一样,由此可见python的人性化啊~ ~

3.浮点数转化成整数是直接截断,并非四舍五入

4.python的变量是不能指定其类型的,他是通过所附的值来决定的,故int a=4是错误的,而应该写成a = 4,此外,long型整数没有最大的长度,具体取决于你的机器配置,一般几百位的整数显示时会在后面加一个L来表示其为long型。

5.‘+’可实现数字的相加或是字符串或是列表的相加,特别方便。如>>>a=[1,'hello']+[2,'Mike'],则a就成了[1,'hello',2,'Mike']

6.用‘’来实现转义,方法同C

7.逗号可以使print(不是print,python中的输出函数是print)函数不换行的输出。如print a,b 这和C比起来不知简单多上倍啊,要是打印个列表,python直接一个print 就出来了。。。

8.*可以实现字符串或列表的重复

>>> a='hello'

>>> b=a*4

>>> b

'hellohellohellohello'

>>> list1=[1,'d']

>>> list2=list1*3

>>> list2

[1, 'd', 1, 'd', 1, 'd']

另外**是乘方,python还支持复数,如:1-2j

9.输入与输出,其中输入时通过input函数,例:str1=input('提示性语句') 此时str1的类型取决于输入类型。还有一个函数是raw_input,可以将输入以字符串的形式处理。

输出时可以直接在print后加变量名或表达式,

如: >>>print 'The area of the circle is",area,'sq cm'

The area of the circle is 80 sq cm

另外也可以用C语言的风格输出,不过有一点差异。

print 'The area of the circle is %f",area,'sq cm' %area (注意,最末尾的百分号前面只有一个空格,否则会出错),如果有多个参数则%(参1,参2,...)

10.通过range可以方便的实现一个特殊的整数列表

range(下限,上限,步长),左闭右开,同list的切片。

如:0~100 : range(0,101),或简写成range(101)

50~100的偶数: range(0,101,2)

在表示C/C++语言中常用的循环时,利用range可以很方便。

如:C/C++ for(int i =0;i<100;i++)

{

....

}

Python for i in range(100):

...

这个i 是局部变量,进行range列表的迭代,可以实现 i 从0到99共100次循环。是不是感觉有点小震撼。。

11.一些循环操作:

break:跳出循环

continue:跳过后面的语句,跳回循环体的顶部

pass:啥都不做

另外:和C相比python中没有++,和- - ,else if用elif来代替,条件语句的()可以省略,条件后需有:。最后逻辑关系 &&用and,||用or , !用not 表示。

字符串操作

1.capitalize(),使字符串首字母大写

2.find(s,beg,end)beg和end之间首次出现参数s的索引

3.islower()和isupper() 测试所有字符是否均小/大写

4.replace(old,new) 将old替换成new

5.split() 将空格分隔的单词以列表形式返回,同理如果是split('a'),则会将字符串进行如下处理,每当碰到a字符则作为前一个字符串的结束,a字符相当于空格。

如: >>> colors='red orange green'

>>> colors.split(a)

['red or', 'nge green']

6.strip()是删除字符串中首尾的空格符

如: >>> a=' hello Kitty '

>>> a.strip()

'hello Kitty'

列表操作

1. 通过for i in list1:来对list1列表的元素进行迭代,赋值给i

2.如果要同时获取i的索引可以用enumerate函数

如:>>> list1=['Jim','Kitty',"Tom"]

>>> for i,j in enumerate(list1):

print i,j

0 Jim

1 Kitty

2 Tom

注意 i和j之间本来是有()的,原型为(i,j),这里省略了括号,所以i和j之间除了有逗号没有空格符

3.列表的一些操作:

切片:咋说呢,其实list和str都可以“切片”,简单地说str[1:-1]就是去掉字符串的第一个字母和最后一个字符。str[1:]就是去掉第一个字符。切片方式和list是一样一样的,都是左闭右开,支持负索引,从0开始。

list1=['a','b','c','d','e','f']

list2=list[0:4]

则list2为['a','b','c','d'] 区间是左闭右开的,即list2包括了list1[0]到list1[3]的所有元素

另两种特殊的简化形式

list2=list1[:4]等同于list2=list1[0:4] list2=list1[4:]等同于list2=list1[4:6]

此外python的列表还支持负数索引,

如>>> list2=list1[-3:-1]

>>> list2

['d', 'e'] 依旧是左闭右开

当想表示从倒数第三个到结束则可以用以下两种方式

>>> list4=list1[-3:6]

>>> list4

['d', 'e', 'f']

>>> list5=list1[-3:]

>>> list5['d', 'e', 'f']

其他情况则会返回空列表

4. 列表具有别名机制(相当于引用)

如:list1=[...]

list2=list1

当list1更改时,list2也会更改,而字符串不具有别名机制,故字符串的别名是很安全的。

5.常见列表方法

append(v):列表后追加v

insert(i,v): v插入索引i

remove(v): 移除第一次找到的v值

reverse(): 反转

sort(): 升序排列(字符串则以字母表顺序为准)

pop(): 移除最后一个元素并返回

注意:除了pop外,所有的方法都只会返回一个特殊值None,列表只有一个,所有的方法都只会修改原列表而不会创建新的列表

如:>>>ted_colors=colors.sort()

>>>print sorted_colors

None

6.列表中的元素可以是列表

>>>life=[['Canada',76.5],['United States',75.5]]

>>>canada=life[0]

>>>canada[1]=80

>>>life

[['Canada',80],['United States',75.5]]

这里的canada是别名,对其操作会影响到主列表life

7.上文知道了如何将字符串转化成列表了(别跟我说你已经忘了。。split 呗~~),那么如何将列表转化成字符串呢?用 join,字面意思就是将列表中的字符连接以来。那用什么连接呢?你可以用 ’,‘ ’%‘ 或是其他任何你喜欢的字符或字符串都可以。列表放在join后的括号中,那用于连接的字符或字符串怎么写呢?给个例子

如:>>> list1=['2','34','good','Hi']

>>> ','.join(list1)

'2,34,good,Hi'

这一点很特殊是用 字符(串).join(列表)

注意点:

1.如果要进行转换操作,则对类表的元素有要求,必须全部是 字符(串),否则会出错。

>>> list3=[2,34,'good','Hi']

>>> ','.join(list3)

Traceback (most recent call last):

File "<pyshell#6>", line 1, in <module>

','.join(list3)

TypeError: sequence item 0: expected string, int found

2.可以用其他连接的哦,如:

>>> list1=['2','34','good','Hi']

>>> 'fool'.join(list1)

'2fool34foolgoodfoolHi'

8.特殊的列表:元组

元组是不可以直接更改的列表,其运行效率更高,元组用‘()’来表示

>>>life=(['Canada',76.5],['United States',75.5])

实际上元组中的对象仍旧可以更改如:life[0][1]=80.0,但不可以更改life[0]。

文件操作

1.标准文件输入格式

如data.txt中的内容为:

Mercury

Venus

Earth

data=open/file('data.txt','r')

for line in data:

print len(line)

为什么会长度多1呢?因为文件中读取的每一行末尾都有一个结束符,用string.strip(),即可去掉该空白字符。前面字符串的方法已介绍过该方法。

data=open/file('data.txt','r')

for line in data:

line=line.strip()

print len(line)

data.close()

当该表参数‘r’,改成‘w’是直接写如,而‘a’是追加

2.当要打开网站上的文件时需导入urllib模块,通过其中的urlopen函数打开目标网页,并返回一个对象,就像操作本地文件一样。

import urllib

url='...'

web_page=urlopen(url)

for i in web_page:

line=line.strip()

print line

web_page.close()

集合和字典

1.集合可以使用元组或是列表

set((2,3,5))等价于set((2,2,3,5,5)),等价于set([2,3,3,5]),简单的说集合只有一个元素,该元素是列表或是元组都可。

2.集合的操作

并(union),交(intersection),添加(add)和移除(remove),注意,只有add,remove和clear是修改当前集合,其余都会创建一个新的集合。

eg:ten=set(range(10)), lows=set([0,1,2,3,4]), odds=set([1,3,5,7,9])

_____________________________________________________________________________________________________________________________________lows.add(9) None

lows.clear() None

(由于add并不会创建一个新集合,故为None,要想得到预期的效果,则需>>>lows=set([0,1,2,3,4]) >>>lows.add(9) >>>lows)

lows.differece(odds) A

lows.intersection(odds) B

lows.issubset(ten) True 包含于

lows.issuperset(odds) False 包含

lows.symmetric_difference(odds)

A+C 对称差

lows.union(odds) A+B+C 并

另一种更简单的方法直接用数学符号表示即可

different set1-set2

intersection set1&set2

issubset set1<=set2

issuperset set1>=set2

symmetric_different set1^set2

union set1 |set2

字典

1.用‘{ }’表示字典,{字符串:值,...}

如:

>>>birds={‘canada goose’:3,‘northern fulmar’:1}

>>>birds[‘canada goose']

3

2.通过赋值来直接对字典进行扩展(若原字典中无该键)或修改键值(原字典中已有该键)

>>>birds={}

>>>birds['snow goose']=3

>>>birds

{'snow goose':3}

3.删除键

del birds['snow goose']

4.对字典的循环,返回的不是键值,而是键!这一点非常重要

for x in birds:

print x,birds[x]

-->'snow goose' 3

5.其他一些常用方法

get(key,value1): 注意,若dict中有key,则返回dict[key],否则返回value1

keys(): 以列表形式返回键

items(): 返回(key,value)列表

values(): 以列表形式返回键值

update(temp): temp字典对原字典进行更新

上诉方法其实一看名称也就明白用途了。。

6.字典的迭代

用iteritems函数

如:for (key,value) in dictionary.iteritems():

...

Lambda表达式

这个特别有意思啊,当你写函数时经常会遇到,给个啥名字好呢?你感觉写一大堆单词上去总怕表达不精练什么的,有可能还会写错单词字母(啥,你英语水平很好,不可能写错。。好吧,我错了),而且只在局部用到,这时候用Lambda函数太棒了。Lambda函数是匿名函数,没有名字。

形式:>>>m=lambda a,b:a+b

>>>m(5,4)

9

lambda 参1,参2,...:表达式 (注意缩进,否则会出现unexcepted error)

几个特殊的函数

1.filter(函数,可迭代对象如列表等),他是个过滤器,列表中的符合函数规则的元素过滤出来,以列表形式返回。

如:def mod1 (a):

return (a%2==0)

list2=filter(mod1,range(1,10))

print list2

--> [2, 4, 6, 8]

2.map(函数,可迭代对象如列表等),其的作用是对整个列表的元素进行检查是否满足函数,并且以列表形式返回True或False

如 def mod1 (a):

return (a%2==0)

list3=map(mod1,range(1,10))

print list3

[False, True, False, True, False, True, False, True, False]

3.reduce(函数,可迭代对象如列表等),其可以实现连续处理功能。其作用是先把列表中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。

话不多说,给个例子吧

计算1+2+3+...+100

python里就一句话

a=reduce((lambda x, y:x+y),range(1,101))

print a

-->5050 (好吧,我错了,写了两句。。)

首先将range(1,101)即列表(1,2,...,100)的第一个元素1,和第二个元素2,拿出来进行+运算,再把返回值3和列表中的第三个元素3相加,然后把返回值6再与列表中第四个元素4相加。。如此不断下去,直至全部加完为止。如果用C的话,大概要十行吧。。

将上诉例子的+换成*就可以计算100!,very easy吧。可以试试计算10000!来测试你的机器性能啊,我的机器只能算到1w!了,10w!等几分钟都不会出结果。。

这里有一个求素数的代码,如果是C/C++的话,起码二十行吧,这里也是一行

0~100的素数代码:

print [x for x in range(1,101) if not [y for y in range(2,x/2+1)if x%y==0]]

异常

1.try和except

类似if和else,如果未发生错误,先执行完try块中的代码,并完全跳过except,若发生错误,则跳到except块开始执行代码,称为“异常被捕获了”。注意:try代码块只执行到第一句发生错误的代码

try:

①x=1/0.3

②print 'reciprocal of 0.3 is',x

③x=1/0.0

④print 'receprocal of 0.0 is',x

except:

⑤print 'error: no reciprocal'

⑥ ...

执行顺序:①②③⑤⑥

在try/except后可添加else块,来告诉python在无异常时发生的事。

注意:只有try中所有代码被正确执行,才会执行else块中的代码。

2.异常对象

python在引发一个异常后,会创建一个用于存放错误信息的对象,可以在except中指定具体的异常

values=[-1,0,1]

for i in range(4):

try:

r=1.0/values[i]

print 'reciprocal of',values[i],'at',i,'is',r

except IndexError:

print ’Index',i,'out of range'

except ArithmeticError:

print 'unable to calculate reciprocal of',values[i]

如果要知道具体的异常,可以把异常赋给变量

except IndexError,e:

print 'error:',e

3.自己引发异常,通过raise

def divide(top,butttom):

if buttom==0:

raise ValueError('divisor is zero')

else:

return top/bottom

for i in range(-1,2):

try:

print divide(1,i)

except ValueError,e:

print 'Caught except for',i

面向对象编程OOP

1.类中的方法至少有一个参数self,函数前都有def,没有返回值类型,这一点太棒了,直接在末尾return 任何东西都可以,返回字符串啊,甚至是列表,还可以是一句话。。如果在C/C++中那肯定要跪,你肯定要写很多其他的东西才能实现该功能。

一些内置函数:

def __init__(self,a,b,c):

self.a=a

self.b=b

self.c=c

因为python会自动将对象本身的引用当做参数传给方法的第一个参数,类似的还有

def __str__(self):

return '...' (此函数是类中的输出函数,最好用return把。。)

实例化直接传参就可以了

如:time1=Time(10,2,45)

2.运算法重载

python中的运算符重载比C++中简单多了。。直接在类中传递一个self,还有另一个参数即可。适用于单目和双目运算符的重载

例如重载实例:

def __add__(self,other): #reload std return "%s : %s : %s" %(self.hour +other.hour,self.minute+other.minute,self.second+other.second)

def __lt__(self,other): # "<" pass

def __call__(self,index): # __builtin__ "()" reload

if (index=="Hour"):

print "~~"

else:

print ".."

def __getitem__(self,index): #__builtin__ "[]" reload return index *2

注意重载的运算法只能在类的实例中使用

3.类的继承

class People:

def __init__(self,num,name): #成员变量初始化函数

self.num=num

self.name=name

...

class Teacher(People):

def __init__(self,num,name,colledge):

People.__init__(self,num,name)

self.college=college 只有在很复杂的情况下才会用到私有继承,默认是共有继承,直接把父类放入括号中,若有多个父类,用逗号隔开

GUI图形用户界面

1. 利用 Tkinter 模块

from Tkinter import *

import Tkinter as tk (这样写后面的Tkinter就可以用tk替代)

import sys (用于导入退出程序的函数等,如sys.exit())

一些插件:

Button,Canvas,Checkbutton(复选框),Radiobutton(单选框),Entry(单行文本框),Text(多行文本框) Label(显示文本的单个行),Listbox(下拉列表),Menu(下拉菜单),Message(显示文本多个行)

======================================================================================================================== Label

Label是最简单的插件,显示一小条文本,需置入父插件中

from Tkinter import *

window=Tk()

label=Label(window,text='hello').pack()

首先得先制造处窗口,通过tk.Tk()即可,然后所有的子插件都嵌套在window中。对window这个窗口可以进行设置,通过

window.geometry("300x400+120+100") #windows' scale and its positionwindow.title("This is just a window...")

注意geometry内是字符串,第一个是length,第二个是width,之间用x(不是乘号,而是字母x),接下来第三第四个是窗口左上角的位置坐标,用加号连接。

2.要注意插件的配置一旦确立,若要更改则需用config方法修改插件的很多属性

这里有一个动态显示Label文本的方法

...

import time

...

label=Lable(window,text='Hello')

time.sleep(2)

label.config(text='Kitty')

3.要让插件的值发生变化,可以用可变类型来实现

共有四种:IntVar(),StringVar(),BooleanVar(),DoubleVar()

可变类型的值是通过set和get方法来设置和获取的。

from Tkinter import *

window=Tk()

data=StringVar()

data.set('Data to display') #设置初始值

label=Label(window,textvariable=data).pack()

window.mainloop()

4.上面的是把插件直接一股脑的丢进window一个窗口上,为了更好的安排插件的位置,可以利用Frame(框架)来将一些插件置于frame内,其实就是在窗口画出一个框来。

显然,将插件置于frame框中只需将window改成frame即可

如:frame=Frame(window).pack()

first=Label(frame,text='first Label').pack()

有时候第一个说明父插件的参数可以省略。默认是window

5.可以将frame修改参数让其可见,修改boardwidth(默认为0)值即可。同时可以更改样式relief,改成‘ sunken’,‘raised’,‘groove’等,这些属性在其他的一些插件如Entry,Text中也有。

6.一些其他的样式处理

eg:

label=Label(window,text="hello",bg='green',fg='white',font=('Curier',14,'bold italic').pack()

bg是background,设置背景颜色,fg是fontground ??设置字体颜色。bold是粗体,对应的normal是细,italic是斜体,roman是不倾斜的。

7.插件的布局

可以看到所有的插件都会有.pack(),当然window就没有了。pack函数是将子插件置入父插件中,父插件是传入的第一个参数,pack内可传入side=‘left’等参数,从而确定该插件的具体安放位置。

另一中方法是grid(row=100,column=100),用于确定具体的网格以便与安放插件。

但两种方法不可以混用。

8.函数:更好的实现交互

为了实现某些插件(如按钮等)的功能,需要用到函数 .(...,command=函数名)即可。注意:等号后面的函数是不允许带参数的,目的是以同一种方式调用他们。

如:

from Tkinter import *

window = Tk()

counter=IntVar()

counter.set(0) #设置计数器初值

def click(var,value):

var.set(var.get()+value)

frame=Frame(window)

frame.pack()

button1=Button(frame,text="Up",command=lambda:click(counter,1)).pack()

button1=Button(frame,text="Down",command=lambda:click(counter,-1)).pack()

label=Label(frame,textvariable=counter).pack()

window.mainloop()

上面的代码功能:通过点击“Up”和“Down”两个按钮来实现对计数器counter的加1或减1操作,并将counter的值传给Lable的textvariable,从而在label中显示。

在 click函数中,有两个参数,其中形参Var会由实参IntVar型的counter代替,value则会被1或-1代替。

在前面说过command后面的函数是不带参数的,故这里用lambda函数,否则你就要写连个command=clickup,command=clickdown。lambda函数是没有名字的函数,常用于定义动作,可以避免全局变量的使用。

9.其他一些插件

① Text

text=Text(frame,heigth=10,width=10).pack()

Text插件还有很多其他的方法,这里略去

②Checkbutton

checkbutton=Checkbutto(frame,text='...',variable=...).pack()

③ Radiobutton

Radiobutton(root, text = j, value = i,variable = food).pack()

④Scale 进度条

scale = Scale(root , from_= 1, to = 20 ,resolution = 1 ,orient='horizontal',variable = speed)

scale.pack(side = "left")

注意:Scale插件中是 from_=下限,to=上限,resolution是精度,orient 来定义横放竖放,默认是竖放。

⑤ tkMessageBox

这是弹出一个新的对话框,前面需有import tkMessageBox

tkMessageBox.askquestion("Who is Naruto?"," A main role in a famous cantoon",icon = "warning")

最后附上自己写的第一个GUI程序源码,第一次写,虽然很挫,功能很少,有很多界面上的功能都是骗人的。。但还是不加修改的直接拿上来了,权当纪念一下我的8天python之旅吧。。

# -*- coding:UTF-8 -*-

import Tkinter as tk

from Tkinter import *

import sys

某培训学员总结Python入门知识合集,厚着脸皮讨要过来分享了!

import tkMessageBox

root=tk.Tk()

root.geometry('300x440+200+330')

root.title("Your Favorite Person")

_nameNum=IntVar()

wordsAC = StringVar()

points=StringVar()

wordsinput=StringVar()

def _chooseBox():

tkMessageBox.askquestion(" ","You should click OK not this button...",icon="warning")

print _nameNum.get()

def _wordAfterChoosing():

tkMessageBox.askquestion("Your choose",'Waw,I like the role too!',icon="warning") #第一行是标签,第二行是输出

def authorDisplay():

tkMessageBox.askquestion("Your choose",'Yan Chuan',icon="warning")

def Advice():

tkMessageBox.askquestion("Advice",'Your advice have already sent to the Author Haha, I lied to you!',icon="warning")

def Points():

print points.get()

def textBox():

print wordsinput.get()

tk.Label(fg='purple',text='Who is your favorite?').pack()

tk.Button(fg='blue', text='please choose yours',command=_chooseBox).pack()

namelist=['Naruto','Sasuke','Sakura','Haku ','Tsunade','Gaara ','Itachi ','Others']

for i ,j in enumerate(namelist):

tk.Radiobutton(root,fg='blue',text=j,value=i,variable=_nameNum).pack()

tk.Button(fg='red',text='OK',command=_wordAfterChoosing).pack()

tk.Button(fg='red',text='Author',command=authorDisplay).pack(side='left')

tk.Button(fg='blue',text='Advice',command=Advice).pack(side='left')

tk.Label(fg='red',text="Please give a point for the software").pack()

scale=Scale(root,from_=1,to=5,resolution=1,orient='horizontal',variable=points).pack()

tk.Entry(relief="sunken",textvariable=wordsinput).pack()

Button(fg="blue",text="submit",command=textBox).pack()

tk.Button(fg="red",text='exit',command=sys.exit).pack()

tk.mainloop

最后如果发现错误,还请大家提一下,毕竟水平有限。对了,忘记说了,电脑同时可以安装python2和python3的。。。你可以两个同时玩。。

猜你喜欢

转载自blog.csdn.net/qq_41841569/article/details/81979430