gtk多线程控制暂停和继续.(HAI)

这篇博客通过一个示例展示了如何在Python中结合多线程和GTK库来控制线程的暂停和继续。主要使用了threading模块的Event对象,通过设置和清除Event的状态来控制线程的执行。GTK界面包含开始、停止按钮,实现对遍历文件夹操作的线程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import threading
import time
import os

event = threading.Event()

def walk(path):
event.wait()
try:
if os.path.isdir(path):
for file in os.listdir(path):
file_path = os.path.join(path, file)
for sub_file in walk(file_path):
yield sub_file
else:
yield path
except:
print "read file error!!"


def func():
for file in walk("/"):
print file

def test():
th2 = threading.Thread(target=func)
th2.setDaemon(True)
th2.start()


if __name__ == '__main__':
def btn_clicked(widget):
test()
print "start..."

def stop_btn_clicked(widget):
event.clear()

def start_btn_clicked(widget):
event.set()

import gtk

gtk.gdk.threads_init()
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.connect("destroy", lambda w : gtk.main_quit())
btn = gtk.Button("start thread")
btn.connect("clicked", btn_clicked)
stop_btn = gtk.Button("stop thread")
stop_btn.connect("clicked", stop_btn_clicked)
start_btn = gtk.Button("jxu start thread")
start_btn.connect("clicked", start_btn_clicked)
hbox = gtk.HBox()
hbox.pack_start(btn)
hbox.pack_start(stop_btn)
hbox.pack_start(start_btn)

win.add(hbox)
win.show_all()
gtk.gdk.threads_enter()
gtk.main()
gtk.gdk.threads_leave()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值