python线程怎么销毁

Python036

python线程怎么销毁,第1张

可以新建一个线程作为父线程,然后实际工作是在它的一个子线程里面做,父线程循环检测一个变量来决定是否退出。Talk

is

cheap

import

threading

class

TestThread(threading.Thread):

def

__init__(self,

thread_num=0,

timeout=1.0):

super(TestThread,

self).__init__()

self.thread_num

=

thread_num

self.stopped

=

False

self.timeout

=

timeout

def

run(self):

def

target_func():

inp

=

raw_input("Thread

%d:

"

%

self.thread_num)

print('Thread

%s

input

%s'

%

(self.thread_num,

inp))

subthread

=

threading.Thread(target=target_func,

args=())

subthread.setDaemon(True)

subthread.start()

while

not

self.stopped:

subthread.join(self.timeout)

print('Thread

stopped')

def

stop(self):

self.stopped

=

True

def

isStopped(self):

return

self.stopped

thread

=

TestThread()

thread.start()

import

time

print('Main

thread

Wainting')

time.sleep(2)

thread.stop()

thread.join()

Python编程类的概念可以比喻来形容一些类型,如“人类”的集合,可以看作是一个类,然后使用这个类来定义人类出每一个具体的人 - 你,我,他等,它的对象。类也有属性和函数,属性部分的类本身,因为人类有名称,属性,如身高和体重,以及特定值的功能都依赖于每个人??功能可以实现为一个类的行为,作为人类吃饭,走路和睡眠功能

类的定义一般是:

类的类名[(父类名)]:[成员函数和成员变量],

类命名的类的名称,并要求可选的父类,但父类,子类的名称的定义,您有适当的属性和父类的方法。当作为一个对象类定义中使用时,会首先调用的__init__构造函数来初始化每个属性的对象,每个属性类(成员变量),可以在构造函数中定义的,当你添加一个对象指针的定义就是喜欢。当对象被销毁,析构函数被调用的__del__,类定义的成员函数,则默认值必须是一个变量(在这个指针类似于C + +)代表对象本身的类定义,的变量名可以定义一般用自变量表示大致相同

基类和父的意思。

父类被称为具有超强的关键字,其实并不存在,如果当前类的方法或变量,按照继承链一直是背靠背,直到对象类。

被实例化,以创建该类的对象。

如何在tkinter窗体上动态创建组件以及销毁组件的方法。

import tkinter

import tkinter.messagebox

import tkinter.simpledialog

btnList = []

# 动态创建组件,并计算组件在窗体上的位置

def place(n):

for i in range(n):

exec('btn'+str(i)+'=tkinter.Button(root,text='+str(i)+')')

eval('btn'+str(i)).place(x=80, y=10+i*30, width=60, height=20)

btnList.append(eval('btn'+str(i)))

root.geometry('200x'+str((n)*30+70)+'+400+300')

return n*30 + 10

# 创建tkinter应用程序

root = tkinter.Tk()

# 窗口标题

root.title('动态创建组件')

# 窗口初始大小和位置

root.geometry('200x180+400+300')

# 不允许改变窗口大小

root.resizable(False, False)

# 增加按钮的按钮

def btnSetClick():

n = tkinter.simpledialog.askinteger(title='输入一个整数',

prompt='想动态增加几个按钮:',

initialvalue=3)

if n and n>0:

startY = place(n)

modify(startY)

# 根据需要禁用和启用“增加按钮”和“清空按钮”

btnSet['state'] = 'disabled'

btnClear['state'] = 'normal'

btnSet = tkinter.Button(root,

text='增加按钮',

command=btnSetClick)

def btnClearClick():

global btnList

# 删除动态创建的按钮

for btn in btnList:

btn.destroy()

btnList = []

modify(20)

btnClear['state'] = 'disabled'

btnSet['state'] = 'normal'

btnClear = tkinter.Button(root,

text='清空按钮',

command=btnClearClick)

# 默认处于禁用状态

btnClear['state'] = 'disabled'

# 动态调整“增加按钮”和“清空按钮”的位置

def modify(startY):

btnSet.place(x=10, y=startY, width=80, height=20)

btnClear.place(x=100, y=startY, width=80, height=20)

modify(20)

root.mainloop()

代码运行后初始状态为:单击“增加按钮”后,在弹出的窗口中输入5,然后窗体变为下面的样子:

单击“清空按钮“后恢复到初始状态。