Показать сообщение отдельно

  #471  
Старый 16.12.2009, 18:09
Аватар для Chubakur
Chubakur
Познающий
Регистрация: 06.04.2009
Сообщений: 69
Провел на форуме:
1032476

Репутация: 39
Отправить сообщение для Chubakur с помощью ICQ
По умолчанию

Цитата:
Сообщение от whexp  
При нажатии на кнопку создаешь и запускаешь поток, в котором и добавляешь элементы. Если не справишься, то днем, когда прийду напишу примерчик.
Напиши пожалуйста!
thread.start_new_thread(test,(link,))
не работает. функция test не вызывается по какой-то причине.
PHP код:
import urllib
import pygtk
pygtk
.require('2.0')
import gtk
import re
import random
import os
import urlparse
import time
import threading
link
=""
pressed=False
def printG
(log):
    
label.set_text(label.get_text()+'\n'+log)
    return
def run():
    global 
link
    printG
("Please wait")
    
startHTMLdownload(link)
    
parsed_string=IOreg()
    
downloadImages(parsed_string,link)
def startDownloadG(button,textbox,label):
    global 
link
    link 
textbox.get_text()
    if 
link[0:7]=="http://":
        
link=link
    
else:
        
link="http://"+str(link)
    
mtimer=threading.Timer(0.1,run)
    
mtimer.start()
def startHTMLdownload(link):
    try:
        
temp_file=file("temp","r")
    
except:
        
temp_file=file("temp","w")
    
temp_file.close()
    
temp_file=file("temp","w")
    
printG("Downloading source code")
    
urllib.urlretrieve(link,"temp")
    
temp_file.close()
    
printG("Source code downloaded")
def HTMLinitializator():
    
link=raw_input("Enter URL:")
    if 
link[0:7]=="http://":
        
startHTMLdownload(link)
    else:
        
link="http://"+str(link)
        
startHTMLdownload(link)
    return 
link
def regexper
(source_string,preg_mask):
    
parsed_string=re.findall(preg_masksource_string)
    return 
parsed_string
def IOreg
():
    
ofile=file("save.txt","w")
    
ifile=file("temp","r")
    
regexp="src=[\'|\"]([^\"]+[gif|png|jpg|jpeg|bmp|img])[\'|\"]"
    
source_string=ifile.read()
    
parsed_string regexper(source_string,regexp)
    for 
image in parsed_string:
        
ofile.write(str(image+'\n'))
    
ofile.close()
    
ifile.close()
    return 
parsed_string
def downloadImages
(img_array,link):
    
parsed_url=urlparse.urlparse(link)
    if 
img_array.__len__():
        
printG("Creating directory.")
        try:
            
os.mkdir(parsed_url.netloc)
        
except:
            
printG("Directory already exist")
    
counter=0
    printG
("Start download")
    for 
image in img_array:
        if 
image[0:4]=="http":
            
image_file_name=str(parsed_url.netloc)+"/"+str(counter)+str(image[image.__len__()-4:image.__len__()])
            
save_file=file(image_file_name,"w")
            
save_file.write("")
            
printG("Start downloading:"+str(image))
            try:
                
urllib.urlretrieve(imageimage_file_name)
            
except:
                
printG("Error")
                continue
            
counter=counter+1
            printG
("downloaded:"+str(counter)+"/"+str(img_array.__len__()))
        
elif image[0:2]=="./":
            
absoluteLink=link+image[1:image.__len__()]
            
image_file_name=str(parsed_url.netloc)+"/"+str(counter)+str(image[image.__len__()-4:image.__len__()])
            
save_file=file(image_file_name,"w")
            
save_file.write("")
            
printG("Start downloading:"+str(absoluteLink))
            try:    
                
urllib.urlretrieve(absoluteLinkimage_file_name)
            
except:
                
printG("Error")
                continue
            
counter=counter+1
            printG
("downloaded:"+str(counter)+"/"+str(img_array.__len__()))
        
elif image[0:2]=="..":
            
printG("Relative path is not support.")
            continue
        
elif image[0]=="/":
            
absoluteLink=link+image
            image_file_name
=str(parsed_url.netloc)+"/"+str(counter)+str(image[image.__len__()-4:image.__len__()])
            
save_file=file(image_file_name,"w")
            
save_file.write("")
            
printG("Start downloading:"+str(absoluteLink))
            try:
                
urllib.urlretrieve(absoluteLinkimage_file_name)
            
except:
                
printG("Error")
                continue
            
counter=counter+1
            printG
("downloaded:"+str(counter)+"/"+str(img_array.__len__()))
        else:
            
absoluteLink=link+"/"+image
            image_file_name
=str(parsed_url.netloc)+"/"+str(counter)+str(image[image.__len__()-4:image.__len__()])
            
save_file=file(image_file_name,"w")
            
save_file.write("")
            
printG("Start downloading:"+str(absoluteLink))
            try:
                
urllib.urlretrieve(absoluteLinkimage_file_name)
            
except:
                
printG("Error")
                continue
            
counter=counter+1
            printG
("downloaded:"+str(counter)+"/"+str(img_array.__len__()))
#main()
window=gtk.Window()
vbox=gtk.VBox()
label=gtk.Label()
textbox=gtk.Entry()
btn_main=gtk.Button("Start")
window.add(vbox)
vbox.add(textbox)
vbox.add(btn_main)
vbox.add(label)
window.show_all()
window.connect("delete-event",lambda a,bgtk.main_quit())
btn_main.connect("clicked",startDownloadG,textbox,label)
gtk.main() 
Вот код. Тут у меня при нажатии на кновку start стартует таймер, который через 0,1 с выполняет функцию run() - а эта функция уже инициализирует все остальные функции. Но по какой-то причине функция run не запускается при включенной граф.оболочке программы.
P.S. Прошу прощения за говнокод, просто изначально это была консольная утилита. И чтобы не писать все заново, я просто отредактировал старый код. Есть много лишнего. Да, и не смейтесь над функцией regexper, я вначале её написал, и только потом осознал что за бред я сделал

Последний раз редактировалось Chubakur; 16.12.2009 в 21:42..
 
Ответить с цитированием