انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: su در 21 خرداد 1395، 06:53 ب‌ظ

عنوان: سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 06:53 ب‌ظ
سلام من تازه می خوام برنامه نویسی یاد بگیرم و میخوام پایتون یاد بگیرم.
اکثرا سوالام رو گوگل می کنم و جواباشون جست می کنم و لی بعضی وقتا جواباشون نمی یابم میخوام اینجا بپرسم.
یکی دوباری هم تو stackoverflow پرسیدم چون سوالام احمقانه بود بهم منفی دادم کلا گند میزنن به انگیزه آدم.
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 06:54 ب‌ظ
سوال اولم اینه
چطو مثلا عدد 3.14 رو بکنم
 314 * 10**(-2)
 
سوال دومم درباره دستور اینپوت و راهی که بشه نیاز به زدن کلید اینتر نباشه؟
http://forum.ubuntu.ir/index.php/topic,135676.msg1083271.html#msg1083271
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: Nelliel در 21 خرداد 1395، 07:06 ب‌ظ
سوال اولم اینه
چطو مثلا عدد 3.14 رو بکنم
 314 * 10**(-2)

خب سوال اولت را که متوجه نشدم  :D
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 07:11 ب‌ظ
سوال اولم اینه
چطو مثلا عدد 3.14 رو بکنم
 314 * 10**(-2)

خب سوال اولت را که متوجه نشدم  :D

میخوام یه فلوت رو تبدیل به یه اینتیجر ضرب در ده به توان منفی یچیزی بکنم.
مثلا
3.14 برابر است با 314 ضرب در ده به توان منفی دو
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: دانیال بهزادی در 21 خرداد 1395، 07:28 ب‌ظ
منظورت اینه؟
>>> 314*10**-2
3.14

اگه دنبال عدد پی هستی البته این روش درست نیست و باید از کتابخونهٔ math استفاده کنی
>>> import math
>>> math.pi
3.141592653589793
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 07:44 ب‌ظ
منظورت اینه؟
>>> 314*10**-2
3.14

اگه دنبال عدد پی هستی البته این روش درست نیست و باید از کتابخونهٔ math استفاده کنی
>>> import math
>>> math.pi
3.141592653589793


نه منظورم اینه مثلا یه فانکشنی باشه که عدد اعشاری رو بگیره به یه نحوی به صورت یه عدد صحیح و یه ضریب منفی ده بدش.
مثلا
method(3.14)=[314,2]
یا به هر نحوی.

خوذم با
fractions.Fraction
درست میکنم گفتم شاید یه چیزی باشه من بلد نباشم
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: Nelliel در 21 خرداد 1395، 08:00 ب‌ظ
خب اون توابع را هم یه انسان می‌نویسه شما میای یه فایل که توش یه سری کلاس هست import میکنی به عنوان کتابخونه بعد ازشون استفاده می‌کنی!

خودت بشین بنویس, اینطوری:

#!/usr/bin/python3

class pi:
    def __init__(self, num):
        self.num = num
        print(int(num)*-10)


c = pi(3.14)
c

خروجی:

runfile('/home/hossein/Prog/test.py', wdir='/home/hossein/Prog')
-30


اون اسکریپت یه عدد را تبدیل به int می‌کنه و بعد به منفی 10 ضربش می‌کنه!
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 08:07 ب‌ظ
خب اون توابع را هم یه انسان می‌نویسه شما میای یه فایل که توش یه سری کلاس هست import میکنی به عنوان کتابخونه بعد ازشون استفاده می‌کنی!

خودت بشین بنویس, اینطوری:

#!/usr/bin/python3

class pi:
    def __init__(self, num):
        self.num = num
        print(int(num)*-10)


c = pi(3.14)
c

خروجی:

runfile('/home/hossein/Prog/test.py', wdir='/home/hossein/Prog')
-30


اون اسکریپت یه عدد را تبدیل به int می‌کنه و بعد به منفی 10 ضربش می‌کنه!


اتفاقا چون دارم یاد میگییرم همین کارارو میکنم و خودم می نویسم . ولی میخوام راه درست درمون واقعی شونم بدونم

(http://axbabak.ir/uploads/camyfirstpyclass2.png) (http://axbabak.ir/)
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: Nelliel در 21 خرداد 1395، 08:18 ب‌ظ
هر راهی که تو را به جواب برسونه توی برنامه نویسی راه درست درمون حساب میشه ;)

بگذریم چه IDE خوبی از کجا آوردیش؟ اسمش چیه؟ ;D عه! این کانفیگ i3wm منه؟ ;D
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 08:55 ب‌ظ
هر راهی که تو را به جواب برسونه توی برنامه نویسی راه درست درمون حساب میشه ;)

بگذریم چه IDE خوبی از کجا آوردیش؟ اسمش چیه؟ ;D عه! این کانفیگ i3wm منه؟ ;D
قانون اول پایتون : به حل یه مساله یه راه و ترجیحا فقط یه راه وجود داره.
yaourt -s pycharm

بلی کانفیگ خودته.
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: koosha در 21 خرداد 1395، 08:57 ب‌ظ
قانون اول پایتون : به حل یه مساله یه راه و ترجیحا فقط یه راه وجود داره.

کی گفته این رو ؟
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 09:11 ب‌ظ
قانون اول پایتون : به حل یه مساله یه راه و ترجیحا فقط یه راه وجود داره.

کی گفته این رو ؟

(http://axbabak.ir/uploads/69salamdonya-3.png) (http://axbabak.ir/)
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: Nelliel در 21 خرداد 1395، 09:24 ب‌ظ
هر راهی که تو را به جواب برسونه توی برنامه نویسی راه درست درمون حساب میشه ;)

بگذریم چه IDE خوبی از کجا آوردیش؟ اسمش چیه؟ ;D عه! این کانفیگ i3wm منه؟ ;D
قانون اول پایتون : به حل یه مساله یه راه و ترجیحا فقط یه راه وجود داره.
yaourt -s pycharm

بلی کانفیگ خودته.

مرگ بر جاوا, پای‌چارم, محصولات جت برینز :|

اون قانون چرتی هست اصلا هم برام مهم نیست از کجا اومده :)

عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: M!lad در 21 خرداد 1395، 10:23 ب‌ظ
این جمله یه جوری بازی با حرف لری وال (پرل) هست که میگه:
https://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it
و از اینجا اومده:
https://wiki.python.org/moin/TOOWTDI
و الزما تو برنامه نویسی چیزی که فقط کار کنه صحیح نیست ;)

این دو تا رو ببین شاید برات جالب باشه:
https://stackoverflow.com/questions/6913532/display-a-decimal-in-scientific-notation
https://python-reference.readthedocs.io/en/latest/docs/float/scientific.html
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 10:38 ب‌ظ
این جمله یه جوری بازی با حرف لری وال (پرل) هست که میگه:
https://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it
و از اینجا اومده:
https://wiki.python.org/moin/TOOWTDI
و الزما تو برنامه نویسی چیزی که فقط کار کنه صحیح نیست ;)

این دو تا رو ببین شاید برات جالب باشه:
https://stackoverflow.com/questions/6913532/display-a-decimal-in-scientific-notation
https://python-reference.readthedocs.io/en/latest/docs/float/scientific.html


https://en.wikipedia.org/wiki/Zen_of_Python
نقل‌قول
There should be one— and preferably only one —obvious way to do it.
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: M!lad در 21 خرداد 1395، 10:45 ب‌ظ
https://en.wikipedia.org/wiki/Zen_of_Python
نقل‌قول
There should be one— and preferably only one —obvious way to do it.

آره و Origin اش اونجایی هست که گفتم...

مواردی که گذاشتم رو چک کردی؟
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 10:50 ب‌ظ
https://en.wikipedia.org/wiki/Zen_of_Python
نقل‌قول
There should be one— and preferably only one —obvious way to do it.

آره و Origin اش اونجایی هست که گفتم...

مواردی که گذاشتم رو چک کردی؟

بلی اینم اون نیست. این اومده به حالت ریاضی استانداردش کرده.وی فک کنم یه روش ساده به ذهنم رسید.فقط باید تعداد کاراکترهای بعد . اعشار رو بشمره.چطور این کار رو باید بکنم؟
مثلا 3.14
دو کاراکتر بعد . داره. چطور تو پایتون باید بشمرمشون ؟
یعنی بگم تعداد کاراکترهای بعد . رو بشمر
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: msajadi832 در 21 خرداد 1395، 11:00 ب‌ظ
موقعیت نقطه توی عدد رو پیدا کن و موقعیت اون رو از طول رشته کم کن و -۱ هم بکن!

۴-۱-۱ = ۲
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 11:04 ب‌ظ
موقعیت نقطه توی عدد رو پیدا کن و موقعیت اون رو از طول رشته کم کن و -۱ هم بکن!

۴-۱-۱ = ۲
>>> a=3.14
>>> a
3.14
>>> str(a).replace(^.,"")
  File "<stdin>", line 1
    str(a).replace(^.,"")
                   ^
SyntaxError: invalid syntax


جواب نداد
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: alireza.crs در 21 خرداد 1395، 11:08 ب‌ظ
از توابع جزء صحیح math.floor ویا سقف math.ceil استفاده کنید
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: msajadi832 در 21 خرداد 1395، 11:10 ب‌ظ
>>> a = 3.14
>>> b = str(a)
>>> b
'3.14'
>>> pos = b.find('.')
>>> pos
1
>>> count = len(b)-pos-1
>>> count
2

replace این وسط چیکاره هست؟
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 11:15 ب‌ظ
>>> a = 3.14
>>> b = str(a)
>>> b
'3.14'
>>> pos = b.find('.')
>>> pos
1
>>> count = len(b)-pos-1
>>> count
2

replace این وسط چیکاره هست؟

قربون جدت بشم . هلم دادی روووشن شدم

>>> a=3.14
>>> b=str(a).split(".")
>>> b
['3', '14']
>>> c=len(str(b[1])
... )
>>> c
2
>>> d=str(a).replace(".","")
>>> d
'314'
>>> print (d,"* 10 ** -",c,sep="")
314* 10 ** -2
>>>
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 11:17 ب‌ظ
>>> a = 3.14
>>> b = str(a)
>>> b
'3.14'
>>> pos = b.find('.')
>>> pos
1
>>> count = len(b)-pos-1
>>> count
2

replace این وسط چیکاره هست؟

میخواستم بگم از اول رشته تا جایی می رسی به . رو پاک کن. که به حمدلله نشد:دی. نمیدونم چطو باید پاک کنم
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: msajadi832 در 21 خرداد 1395، 11:20 ب‌ظ
>>> number = 3.14
>>> str(number-int(number))[2:]
'14'
این هم یه روش برای بدست آوردن فقط بعد از ممیز، که از توی stackoverflow یافتم
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 11:24 ب‌ظ
>>> number = 3.14
>>> str(number-int(number))[2:]
'14'
این هم یه روش برای بدست آوردن فقط بعد از ممیز، که از توی stackoverflow یافتم
https://twitter.com/sae13/status/741260457248489472
سوال بعدی درباره ریپلیس. چطو بگم از اول رشته پاک کن تا زمانی که میرسی به یه کاراکتر خاص؟ تو ای مثال "." بود اون کاراکتر
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: msajadi832 در 21 خرداد 1395، 11:29 ب‌ظ
حتما باید با replace باشه؟
در همون مثال نقطه می تونی موقعیت نقطه رو پیدا کنی (مثلا ۱) و از نقطه به بعد رو بریزی توی یه متغیر دیگه (یا همون متغیر)

>>> number = 3.14
>>> strNum = str(number)
>>> end = strNum[strNum.find('.'):]
>>> end
'.14'
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 21 خرداد 1395، 11:33 ب‌ظ
حتما باید با replace باشه؟
در همون مثال نقطه می تونی موقعیت نقطه رو پیدا کنی (مثلا ۱) و از نقطه به بعد رو بریزی توی یه متغیر دیگه

>>> number = 3.14
>>> strNum = str(number)
>>> end = strNum[strNum.find('.'):]
>>> end
'.14'
یا میتونم اسپلیت کنم و ارایه اول حذف کنم. ولی دستوری مثل بش نداریم که خودش ای کار بکنه؟
تو بش با sed نمینویسیم ^. یعنی از اول تا نقطه یا .% یعنی از نقطه تا آخر رو پاک کن؟
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 22 خرداد 1395، 12:08 ق‌ظ
حتما باید با replace باشه؟
در همون مثال نقطه می تونی موقعیت نقطه رو پیدا کنی (مثلا ۱) و از نقطه به بعد رو بریزی توی یه متغیر دیگه

>>> number = 3.14
>>> strNum = str(number)
>>> end = strNum[strNum.find('.'):]
>>> end
'.14'
یا میتونم اسپلیت کنم و ارایه اول حذف کنم. ولی دستوری مثل بش نداریم که خودش ای کار بکنه؟
تو بش با sed نمینویسیم ^. یعنی از اول تا نقطه یا .% یعنی از نقطه تا آخر رو پاک کن؟

یافتم یافتم
>>> a=3.1415161718
>>> re.sub(r'^.*\.','',str(a))
'1415161718'

http://www.tutorialspoint.com/python/python_reg_expressions.htm
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: 藤沼 در 22 خرداد 1395، 02:17 ق‌ظ
چطور یک رشته بعد از یک زیررشتهٔ خاص (کارکتر) رو بگیرم؟
STFW
text = 'Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large.'
text.split('.', 1)[-1]
=> '. You start with a small trivial project, and you should never expect it to get large.'
http://stackoverflow.com/a/904756
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 22 خرداد 1395، 08:36 ب‌ظ
دستور اینپوت همیشه آخرش یه اینتر میخواد.
تو پایتون۳ چطور یه اینپوت بگیرم که نیاز به اینتر نداشته باشه؟Please press  a key for continue

گوگل کردم راهی نوشته بودن فقط تو ویندوز جواب میده \\:D/
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: Nelliel در 22 خرداد 1395، 09:31 ب‌ظ
دستور اینپوت همیشه آخرش یه اینتر میخواد.
تو پایتون۳ چطور یه اینپوت بگیرم که نیاز به اینتر نداشته باشه؟Please press  a key for continue

گوگل کردم راهی نوشته بودن فقط تو ویندوز جواب میده \\:D/

من ورودی می‌گیرم بدون اینکه اون پیام را برام بده, میشه یه عکس بدی؟!  ???
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 22 خرداد 1395، 11:52 ب‌ظ
دستور اینپوت همیشه آخرش یه اینتر میخواد.
تو پایتون۳ چطور یه اینپوت بگیرم که نیاز به اینتر نداشته باشه؟Please press  a key for continue

گوگل کردم راهی نوشته بودن فقط تو ویندوز جواب میده \\:D/

من ورودی می‌گیرم بدون اینکه اون پیام را برام بده, میشه یه عکس بدی؟!  ???

منظورم نگرفتی
حالت عادی باید اینتر بزنی
m=inputu("please enter a key")


ولی من میخوام نیاز به زدن اینتر نباشه.مثلا به ایتپوت هر کلیدی زدم بدون زدن اینتر  ادامه بده و بره خط بعدی برنامه رو اجرا کنه
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 24 خرداد 1395، 01:46 ب‌ظ
سوال سه PyQt برا ساختن واسط کاربریه؟
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: Nelliel در 24 خرداد 1395، 03:34 ب‌ظ
سوال سه PyQt برا ساختن واسط کاربریه؟

آره, سه‌تا فریم ورک PyQT, PYGTK و PyGobject برای طراحی پوسته هستند!
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 24 خرداد 1395، 04:34 ب‌ظ
سوال سه PyQt برا ساختن واسط کاربریه؟

آره, سه‌تا فریم ورک PyQT, PYGTK و PyGobject برای طراحی پوسته هستند!

 کدوم یکی برا شروع یادگیری ساده ترن؟
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: Nelliel در 24 خرداد 1395، 05:04 ب‌ظ
اون PyGTK را که خدا بیامرزه! ولی از بین کیوت و GTK من GTK را ترجیح میدم که میشه PyGobject!
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: دانیال بهزادی در 25 خرداد 1395، 02:55 ب‌ظ
من Pyotherside رو ترجیح می‌دم به همه‌شون
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 25 خرداد 1395، 11:59 ب‌ظ
من Pyotherside رو ترجیح می‌دم به همه‌شون

هیچ کدوم چیزی مث ویژوال استودیو یا کیو تی دیزاینر ندارن که بشه دراگ اند دراپ کنی ؟

عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 26 خرداد 1395، 12:02 ق‌ظ
اقا میخوام یاد بگیرم رابط کاربری گرافیکی درست کنم. دهنم سرویسیده شده.
از صبح نشستم با کلی گوگل تونستم همچین چیز زشتی بکشم.
http://n0n.ir/84033112
هییییییی ویژوال استودیو کجایی:دی.
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject

class MyWindow(Gtk.Window):
        def __init__(self):
            Gtk.Window.__init__(self,title="PyMovie")
            self.set_size_request(500,200)
            # self.add(grid)

            vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
            print(dir(vbox.props))
            self.add(vbox)
            self.linkUrl = Gtk.Entry()

            # create a horizontal box to pack the entry and a label
            # self.linkUrl.set_text("http://dl11.imovie-dl.in/Serial/"
            #                     "Game-Of-Thrones/S06/480p-HDTV/")
            vbox.pack_start(self.linkUrl, True, True, 0)
            self.text = self.linkUrl.get_text()
            vbox.pack_end(self.linkUrl,True,True,0)
            # hbox = Gtk.Box(spacing=6)
            # vbox.pack_start(hbox, True, True, 0)

            hbox=Gtk.Box(spacing=6)
            vbox.pack_start(hbox, True, True, 0)
            self.passwordimovie = Gtk.Entry()
            self.passwordimovie.set_text("password")
            self.passwordimovie.set_visibility(False)
            hbox.pack_start(self.passwordimovie, True, True, 1)


            self.userMovie = Gtk.Entry()
            self.userMovie.set_text("user")
            hbox.pack_start(self.userMovie, True, True, 1)

            hbox2 = Gtk.Box(spacing=6)
            vbox.pack_start(hbox2, True, True, 0)
            button = Gtk.Button.new_with_label("Click Me")
            button.connect("clicked", self.on_click_me_clicked)
            hbox2.pack_start(button, True, True, 0)



        def on_click_me_clicked(self, button):
            print(self.text)

win = MyWindow()
win.connect("delete-event",Gtk.main_quit)
win.show_all()
Gtk.main()

سوالم مال اون فانکشن on_click_me یه.
چرا تکستی که توی باکس اون بالا مینویسم رو نشون نمیده؟



حل شد مشکل


        def on_click_me_clicked(self, button):
            self.text = self.linkUrl.get_text()

            print(self.text)



[/color][/size]
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 26 خرداد 1395، 12:38 ق‌ظ
اون PyGTK را که خدا بیامرزه! ولی از بین کیوت و GTK من GTK را ترجیح میدم که میشه PyGobject!

چظوری اندازه باتونام مشخص کنم؟ همش زشتن
http://n0n.ir/84033112
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: دانیال بهزادی در 27 خرداد 1395، 12:53 ق‌ظ
هیچ کدوم چیزی مث ویژوال استودیو یا کیو تی دیزاینر ندارن که بشه دراگ اند دراپ کنی ؟
چرا. Qtcreator داره. ولی خودت کد بزنی راحت‌تره که!
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 27 خرداد 1395، 12:59 ق‌ظ
هیچ کدوم چیزی مث ویژوال استودیو یا کیو تی دیزاینر ندارن که بشه دراگ اند دراپ کنی ؟
چرا. Qtcreator داره. ولی خودت کد بزنی راحت‌تره که!

یعنی این:
https://code.google.com/archive/p/qt-creator-python/

بابا من تازه کارم
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: دانیال بهزادی در 27 خرداد 1395، 01:09 ق‌ظ
نه. اگه اوبونتو داری این رو بزن:
$ sudo apt install ubuntu-sdk
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 27 خرداد 1395، 01:13 ق‌ظ
نه. اگه اوبونتو داری این رو بزن:
$ sudo apt install ubuntu-sdk

نه آرچ دارم.
برا پایتونه ؟
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: دانیال بهزادی در 27 خرداد 1395، 01:24 ق‌ظ
خب پس qtcreator رو نصب کن. نه، برای کیوته! با qml رابط کاربری رو می‌سازی و با پایتون بک‌اندش رو می‌نویسی.
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 27 خرداد 1395، 06:02 ب‌ظ
خب پس qtcreator رو نصب کن. نه، برای کیوته! با qml رابط کاربری رو می‌سازی و با پایتون بک‌اندش رو می‌نویسی.
با تشکر
عنوان: پاسخ : سوالات پایتونی
ارسال شده توسط: su در 28 خرداد 1395، 08:32 ب‌ظ
اون PyGTK را که خدا بیامرزه! ولی از بین کیوت و GTK من GTK را ترجیح میدم که میشه PyGobject!

چرا کلید select all من کار نمیکنه؟ و همه لیست انخاب نمیکنه؟

import gi  # GObject UI Generator for Python
import requests  # for get site html content
import bs4  # for process html content for finding film
#           http://dl11.imovie-dl.in/Serial/Game-Of-Thrones/S01/480p-HDTV/
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject

#   fetch url links
def links(url):

    __url = str(url)  # find_dl_url()
    __page = requests.get(__url)
    __page_content = bs4.BeautifulSoup(__page.content)
    __links = __page_content.select('a[href*=".mkv"]')
    __dict = {}
    __sorted_dict = {}
    __list = []

    for x in __links:

        __dict[x.string] = x.get('href')
        __list.append(x.string)

    __list = sorted(__list)
    return  __list, __dict


#this is for list box and at the moment i have no idea what this shit is
class ListBoxRowWithData(Gtk.ListBoxRow):

    def __init__(self, data):

        super(Gtk.ListBoxRow, self).__init__()
        self.data = data
        self.add(Gtk.Label(data))

class linkswindow(Gtk.Window):  #   cooose wich links needs to download

    def __init__(self,list0,dict0):

        Gtk.Window.__init__(self, title="Choose links")
        self.set_size_request(100, 50)
        box_outer = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
        self.add(box_outer)
        __list = list0
        __dict = dict0
        # print(__list,__dict)
#   ######choose what episode u wanna download:###

        self.listbox = Gtk.ListBox()

        for items in __list:

            self.listbox.add(ListBoxRowWithData(items))
        self.listbox.connect('row-activated',lambda widget, row:print(row.data))

        box_outer.pack_start(self.listbox, True, True, 0)
        self.listbox.set_selection_mode(3)
        self.listbox.show_all()
        #   buttun stuff
        vbox = Gtk.Box()
        box_outer.pack_start(vbox, True, True, 0)
        # self.add(self.vbox)
        select_all_button =Gtk.Button(label="Select All")
        select_all_button.connect("clicked", self.on_select_all_clicked)
        vbox.pack_start(select_all_button,True, True,0)
        select_none_button =Gtk.Button(label="Select None")
        select_none_button.connect("clicked", self.on_select_none_clicked)
        vbox.pack_start(select_none_button,True, True, 0)
        exit_button= Gtk.Button(label="Exit")
        exit_button.connect("clicked", self.on_exit_clicked)
        vbox.pack_start(exit_button, True, True, 0)


    def on_select_all_clicked(self,button):
        self.listbox.do_select_all()


    def on_select_none_clicked(self, button):
        self.listbox.do_unselect_all(1)


    def on_exit_clicked(self, button):
        exit()

class MyWindow(Gtk.Window):

    def __init__(self):

        Gtk.Window.__init__(self, title="PyMovie")
        self.set_size_request(100, 10)
        self.set_border_width(10)
        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
        # print(dir(vbox.props))   # shows commands can use for object
        self.add(vbox)
        self.linkUrl = Gtk.Entry()
        vbox.pack_start(self.linkUrl, True, True, 0)
        vbox.pack_end(self.linkUrl, True, True, 0)
        # hbox = Gtk.Box(spacing=6)
        # vbox.pack_start(hbox, True, True, 0)
        hbox = Gtk.Box(spacing=6)
        vbox.pack_start(hbox, True, True, 0)

        self.passwordimovie = Gtk.Entry()
        self.passwordimovie.set_text("password")
        self.passwordimovie.set_visibility(False)
        hbox.pack_start(self.passwordimovie, True, True, 1)

        self.userMovie = Gtk.Entry()
        self.userMovie.set_text("user")
        hbox.pack_start(self.userMovie, True, True, 1)

        hbox2 = Gtk.Box(spacing=6)
        vbox.pack_start(hbox2, True, True, 0)
        button = Gtk.Button.new_with_label("Click Me")
        button.connect("clicked", self.on_click_me_clicked)
        hbox2.pack_start(button, True, True, 0)
        button.set_border_width(10)


        ########  exit button
        exitbutton = Gtk.Button.new_with_label("exit")
        exitbutton.connect("clicked", self.on_exit_clicked)
        hbox2.pack_start(exitbutton, True, True, 0)
        ############### end exit button


    def on_click_me_clicked(self, button):

        self.link = self.linkUrl.get_text()
        self.userName = self.userMovie.get_text()
        self.userPass = self.passwordimovie.get_text()
        lst,dct = links(self.link)
        # print(lst , dct)
        winlink = linkswindow(lst , dct)
        winlink.connect("delete-event", Gtk.main_quit)
        winlink.show_all()
        Gtk.main()
    ########## on exit click method
    def on_exit_clicked(self, button):

        print("1")
        exit()


win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()


داکیومنتش ایجاس
http://13x.ir/B2
ولی من هیچ چی ازش نمیفهمم.