Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

16.12.2009, 18:09
|
|
Познающий
Регистрация: 06.04.2009
Сообщений: 69
Провел на форуме: 1032476
Репутация:
39
|
|
Сообщение от 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_mask, source_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(image, image_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(absoluteLink, image_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(absoluteLink, image_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(absoluteLink, image_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,b: gtk.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..
|
|
|

16.12.2009, 21:59
|
|
Познающий
Регистрация: 30.11.2009
Сообщений: 97
Провел на форуме: 333264
Репутация:
80
|
|
Нашел тебе статью с примерчиком:
http://h8-self.livejournal.com/6590.html
ps. честно говоря я в pygtk не понимаю ничего)) просто сталкивался давно с такой проблемой на wxpython. так вот. возможно в твоем коде нужно вызвать метод gtk.gdk.threads_init()?
Последний раз редактировалось whexp; 16.12.2009 в 22:02..
|
|
|

16.12.2009, 22:45
|
|
Познающий
Регистрация: 06.04.2009
Сообщений: 69
Провел на форуме: 1032476
Репутация:
39
|
|
Сообщение от whexp
Нашел тебе статью с примерчиком:
http://h8-self.livejournal.com/6590.html
ps. честно говоря я в pygtk не понимаю ничего)) просто сталкивался давно с такой проблемой на wxpython. так вот. возможно в твоем коде нужно вызвать метод gtk.gdk.threads_init()?
Огромное тебе спасибо! После того как я вызвал этод метод, код заработал как часы, даже без исправлений! Большое тебе спасибо!
|
|
|

16.12.2009, 22:53
|
|
Познающий
Регистрация: 30.11.2009
Сообщений: 97
Провел на форуме: 333264
Репутация:
80
|
|
Сообщение от Chubakur
Огромное тебе спасибо! После того как я вызвал этод метод, код заработал как часы, даже без исправлений! Большое тебе спасибо!
не за что, рад помочь 
|
|
|

17.12.2009, 14:17
|
|
Новичок
Регистрация: 16.12.2009
Сообщений: 27
Провел на форуме: 203807
Репутация:
30
|
|
Подскажите, пожалуйста, где можно почитать про программирование для смартфонов на питоне? В частности интересует Symbian 9.4 TOUCH.
P.S. нужно узнать про работу с 2d графикой и тачскрином.
Последний раз редактировалось Omegа; 17.12.2009 в 14:36..
|
|
|

17.12.2009, 15:15
|
|
Познающий
Регистрация: 30.11.2009
Сообщений: 97
Провел на форуме: 333264
Репутация:
80
|
|
Omegа, конкретно по pys60 можешь посмотреть здесь:
http://mobilenin.com/pys60/menu.htm
http://wiki.forum.nokia.com/index.php/Introduction_to_PyS60
|
|
|

18.12.2009, 10:08
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Сообщение от whexp
Нашел тебе статью с примерчиком:
http://h8-self.livejournal.com/6590.html
ps. честно говоря я в pygtk не понимаю ничего)) просто сталкивался давно с такой проблемой на wxpython. так вот. возможно в твоем коде нужно вызвать метод gtk.gdk.threads_init()?
На wxpython есть пару гуев - хз, никогда не инициализировал потоки - сразу и тупо запускал да и все. Задумался о переходе на pyQt. Не нравится лицензией, зато ВОЗМОЖНО избавлюсь от проблем gtk(Arch, Ubuntu). На Арче - вылетало приложение нафиг при любой попытке изменить фрейм, на Ubuntu реже, но слетает с сегфолтом (плюс в консоле по жизни ошибки).
Вопрос на засыпку - как себя ведёт pyQt ?
|
|
|

18.12.2009, 11:43
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Вопрос на засыпку - как себя ведёт pyQt ?
Да нормально себя ведет, по крайней мере пока нареканий нету.
Задумался о переходе на pyQt. Не нравится лицензией
Что именно тебя не устраивает в лицензии? )
|
|
|

18.12.2009, 13:02
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Сообщение от razb
Да нормально себя ведет, по крайней мере пока нареканий нету.
Что именно тебя не устраивает в лицензии? )
Цена в 350 английских фунтов за версию для использования в разработке проприетарного ПО.
|
|
|

18.12.2009, 17:21
|
|
Познающий
Регистрация: 30.11.2009
Сообщений: 97
Провел на форуме: 333264
Репутация:
80
|
|
login999, дык на wx их и не надо инициализировать - просто создаешь и запускаешь. насчет корявости гтк - не замечал =/
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|