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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: sahama در 23 شهریور 1388، 11:13 ق‌ظ

عنوان: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: sahama در 23 شهریور 1388، 11:13 ق‌ظ
سلام به همه
گفته شده که یاد گیری بر هر کسی واجبه و از طرفی کسی که چیزی رو یاد گرفت باید زکاتش رو بده :)
حالا ما (من بعلاوه هر کسی که دوست داره) می خوایم PyQt یاد بگیریم هرکسی هست یا علی
جلسه اول:
در این نوشتار مبنا را بر این گذاردیم تا که خواننده با زبان برنامه سازی پایتون به صورت مقدماتی آشناست همچنین مبنا بر آن است که وی محیط های نگاره ای(گرافیکی GUI) را باز می شناسد و با تفاوت اجزای گرافیکی همچون دکمه ها، رادیو باتوم ها، چک باکس ها، تکس ادیت ها و … آشناست (به یاد lomion)

این رو به عنوان ساده ترین برنامه ممکن در نظر بگیرید
#!/usr/bin/env python
import sys
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
hello = QtGui.QPushButton("Hello world!")
hello.resize(100, 30)
hello.show()
sys.exit(app.exec_())
خوب بذارین ببینیم چی داریم:خط اول که مشخصه چیه
خط دوم هم نیاز به توضیح نداره
توی خط سوم از مجموعه PyQt4 قسمت QtGui رو به برنامه وارد کردیم که بیشتر اجزای گرافیکی توی همین مجموعه هستند البته تا اونجا که من می دونم همه اونها همین جا باید باشن ولی چون اطلاع کاملی ندارم چیزی نمی گم
هر برنامه PyQt نیاز به یک شی از نوع   QtGui.QApplication داره که در واقع همون برنامه ماست در خط چهارم چنین شی رو با آرگومانهای ورودی به خود برنامه ساختیم
تو خط پنجم یه دکمه ساختیم به نام hello که نوشته روی اون  Hello world هست
حالا یه سری خصوصیات به دکمه می دیم از جمله اندازه و مهمتر از اون خصوصیت نمایشیه که می گیم این دکمه قابل نمایش باشه یعنی مخفی نباشه
و در پایان هم برنامه رو با خروجی app که قبلا ساختیم و ارسال دادن اون به خروجی برنامه می بندیم.

یه فرم با یه دکمه با ابعادی که مشخص شده و نوشته ای که توی برنامه برای اون در نظر گرفته شده که هیچ کاری هم انجام نمی ده!
حالا می خواهیم یه تابع ساده به این دکمه مرتبط  کنیم چطوری؟؟  آها!! اینجاست
توی کتابخونه qt  دو تا دونه مفهوم داریم که خیلی مهم هستند:
۱-signal
۲-slot
البته چیزای دیگه ای هم مثل event ها هستند ولی اونا رو بعد توضیح می دم
حالا اگر بخوام توضیح بدم اینطوری می شه : signal مثل یه هورمونه که تو بدن ترشح می شه این هورمون رو بلافاصله خون به تمام قسمت های بدن می رسونه ولی حالا چه اتفاقی می افته ؟؟ هیچی چون گیرنده ای برای این هورمون وجود نداره و مثل این می مونه که اصلا هورمونی ترشح نشده!!
خوب که چی؟ آهان!! اینجاست : ما بایستی گیرنده هایی برای این هورمون طراحی کنیم یا گیرنده هایی رو به این هورمون متصل کنیم که این گیرنده ها همون slot هستند
جالب شد نه؟؟!!
حالا برگردیم به برنامه

 #!/usr/bin/env python
import sys
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication(sys.argv)
hello = QtGui.QPushButton("Hello world!")
hello.resize(100, 30)
hello.setFont(QtGui.QFont("Times", 12, QtGui.QFont.Bold))
QtCore.QObject.connect(hello, QtCore.SIGNAL("clicked()"), app,
QtCore.SLOT("quit()"))
hello.show()
sys.exit(app.exec_())

قسمت های تکراری رو دیگه توضیح نمی دیم و می مونه بقیه
ما از pyqt قسمت qtcore رو هم به برنامه اصافه کردیم که signal ها و slot ها اونجا تعریف می شن . البته توجه داشته باشید که تابع connect رو widget ها هم (البته تا اونجا که من می دونم) دارن و شما می تونستید برای این تابع از دکمه استفاده کنید یعنی
hello.connect(hello, QtCore.SIGNAL("clicked()"), app, QtCore.SLOT("quit()"))البته قسمت دیگه ای هم وجود داره که می شه گفت اضافه هست البته توی برنامه های کوچیک که به مرور باهاشون آشنا می شید
حالا چی داریم؟ ما با این کار اون گیرنده هورمون توی بدن رو مشخص کردیم و اصطلاحا اونها رو به هم متصل کردیم
چطوری؟؟
گفتیم که یکی از غدد بدن هست به نام hello که این غده یه هورمون ترشح می کنه به نام clicked توجه کنید که ممکنه خیلی از غدد بدن این هورمون رو ترشح کنن ولی ما بایستی فقط به هورمونی که از این غده ترشح می شه جواب بدیم
توی آرگومان دوم نوع هورمون رو مشخص کردیم که گفته شد
توی آرگومان سوم گفتیم که گیرنده هورمون کیه که همون app هست. البته این یه خورده اخطیاریه توجه کنید که فقط یه خورده  ;D
توی آرگمان چهارم هم عملی که در قبال گرفتن این پیام انجام می شه رو توضیح دادیم که همون خروجه
توی یه خط هم نوی قلم رو مشخص کردیم که نیاز به توضیح نداره
فکر نمی کنم شما بخواین برنامه ای بسازید که فقط یه دکمه توش باشه پس لازمه که طرح بندی ها رو یاد بگیریم چطوری؟
می گم الان اینو داشته باشید:

#!/usr/bin/env python
import sys
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication(sys.argv)
window = QtGui.QWidget()
window.resize(200, 120)
hello = QtGui.QPushButton("hello word!", window)
hello.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold))
hello.setGeometry(10, 40, 180, 40)
QtCore.QObject.connect(hello, QtCore.SIGNAL("clicked()"),
                       app, QtCore.SLOT("quit()"))
window.show()
sys.exit(app.exec_())

این برنامه اولین قدم بذای طرح بندیه . چطوری حالا می گم:
ما اینجا بر خلاف قبل که دکه وابسطه به هیج کجا نبود یه ویدگت ساختیم به نام window و دکمه رو به اون متصل کردیم
حالا با نمایش window کل اجزای متصل به اون هم نمایش داده می شه و کارایی از این قبیل، تنها چیزی که شاید نیاز به توضیح داشته باشه اینکه که موقع ساخت دکمه اون رو به پنجره اصلی یعنی window متصل کردیم که البته این یه کم غیر معموله و بیشتر با استفاده از توابع layout این کار رو انجام می دن که توضیح می دم
از همینجا تاکید می کنم که توی هر برنامه سازی گرافیکی layout نقش بسیار مهمی داره در نتیجه من تذکر می دم که هر چیزی رو که دوست داشتید سرسری بگیرید layout رو سرسری نگیرید و اون رو به نحو شایسته یاد بگیرید. گرچه با QtDesigner می تونید طرح بندی کنید ولی من خودم خوشم نیومد (کد بی مصرف زیادی تولید میکنه) گرچه آینده اونو هم توضیح می دم
پایان جلسه اول
بعدا در مورد مجوز این نوشته هم فکر می کنم الان بی مجوزه :o
تا یادم نرفته با نظرات مفید خودتون ما رو به نوشتن دلگرم فرمایید (شد مثل وبلاگا)
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: سید محمود رضا سجادی در 23 شهریور 1388، 01:26 ب‌ظ
سلام
خیلی عالی بود. فقط یک سوال
ببخشید اگر زیادی مبتدیه و نمیتونم سوال رو هم خوب شرح بدم (چون بلد نیستم)

mono و dotnet و البته بعضی IDE های دیگه این قابلیت رو دارند که راهنماییتون کنن. مثلا وقتی مینویسی btnHello و دکمه دات (.) رو میزنی بالفاصله لیستی از پراپرتی های اون شی رو برات میاره و یا وقتی یک تابع رو تایپ میکنی بلا فاصله بعد از اینکه پرانتز رو باز میکنی یک پیغام بهت میده و تمام شاکال مجاز برای اون تابع رو نشونت میده
این خیلی راهنمایی و کمک بزرگیه
اول اینکه جلوی غلط های املایی یا کوچک و بزرگ نوشتن دستورات رو میگیره و دوم ککه خیلی هم مهمتره اینه که برای ما تازه کارا که تمام دستور ها رو بلد نیستم میشه کمک و راهنمابیی گرفت و توابع موجود در یک کتابخونه رو همنجا در زمان کد (و نه از help) دید

سوال : آیا IDE ای در لینوکس وجود داره که این قابلیت رو در باره زبون هایی مثل پیتون و پرل و سی یا سی پلاس پلاس داشته باشه؟؟؟؟
اگه قرار باشه طبق آموزش شما محیط گرافیکی رو کد بزنیم و از qtdesigner به همون دلیلی که گفتید(ایجاد کد های بد و زیادی) صرف نظر کنیم به همچین IDE ای نیاز واجب داریم
مخصوصا در اول کار

بازم ممنون
حتما ادامه بدید

لطفا یکی از دوستان هم آموزش gtk رو شروع کنه
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: lomion در 23 شهریور 1388، 02:01 ب‌ظ
چسبید! امیدوارم که ادامه پیدا کنه :)
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: sahama در 23 شهریور 1388، 05:42 ب‌ظ
چسبید! امیدوارم که ادامه پیدا کنه :)
علی آقا شما لطف دارین :)

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

mono و dotnet و البته بعضی IDE های دیگه این قابلیت رو دارند که راهنماییتون کنن. مثلا وقتی مینویسی btnHello و دکمه دات (.) رو میزنی بالفاصله لیستی از پراپرتی های اون شی رو برات میاره و یا وقتی یک تابع رو تایپ میکنی بلا فاصله بعد از اینکه پرانتز رو باز میکنی یک پیغام بهت میده و تمام شاکال مجاز برای اون تابع رو نشونت میده
این خیلی راهنمایی و کمک بزرگیه
اول اینکه جلوی غلط های املایی یا کوچک و بزرگ نوشتن دستورات رو میگیره و دوم ککه خیلی هم مهمتره اینه که برای ما تازه کارا که تمام دستور ها رو بلد نیستم میشه کمک و راهنمابیی گرفت و توابع موجود در یک کتابخونه رو همنجا در زمان کد (و نه از help) دید

سوال : آیا IDE ای در لینوکس وجود داره که این قابلیت رو در باره زبون هایی مثل پیتون و پرل و سی یا سی پلاس پلاس داشته باشه؟؟؟؟
اگه قرار باشه طبق آموزش شما محیط گرافیکی رو کد بزنیم و از qtdesigner به همون دلیلی که گفتید(ایجاد کد های بد و زیادی) صرف نظر کنیم به همچین IDE ای نیاز واجب داریم
مخصوصا در اول کار

بازم ممنون
حتما ادامه بدید

لطفا یکی از دوستان هم آموزش gtk رو شروع کنه
خیلی از ادیتور ها هستند که این کار رو توی لینوکس انجام می دن به این کار  autocomplete می گن
مثلا شما می تونید pydev رو روی eclipse نصب کنید :)
عنوان: پاسخ به: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: سید محمود رضا سجادی در 24 شهریور 1388، 04:28 ب‌ظ
خیلی از ادیتور ها هستند که این کار رو توی لینوکس انجام می دن به این کار  autocomplete می گن
مثلا شما می تونید pydev رو روی eclipse نصب کنید :)

شرمنده
من eclips رو رو سیستمم دارم (از خود مخازن ورژن ۳.۲) اما همچین پکیجی تو synaptic نیست!!!
البته cdt هم توی synaptic نیست! مخزن خاصی رو باید اضافه کنم برای نصب اینا؟
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: sahama در 27 شهریور 1388، 06:07 ب‌ظ
http://www.google.com/search?q=pydev+download&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:fa:official&client=firefox-a
عنوان: پاسخ به: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: سید محمود رضا سجادی در 28 شهریور 1388، 10:58 ب‌ظ
خیلی از ادیتور ها هستند که این کار رو توی لینوکس انجام می دن به این کار  autocomplete می گن
مثلا شما می تونید pydev رو روی eclipse نصب کنید :)

شرمنده
من eclips رو رو سیستمم دارم (از خود مخازن ورژن ۳.۲) اما همچین پکیجی تو synaptic نیست!!!
البته cdt هم توی synaptic نیست! مخزن خاصی رو باید اضافه کنم برای نصب اینا؟

http://www.google.com/search?q=pydev+download&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:fa:official&client=firefox-a

سلام عزیز
ببخشید که زود تر نیومدم
من مشکل رو خودم حل کرده بودم
پکیج مورد نظر را با apt-cache search جستجو و پیدا کردم و نصب کردم
مشکل من با synaptic بود که همچنان هم حل نشده!اگه برام مشکلی ایجاد کرد حتما تاپیک مجزا برای پیگیری این مشکل خواهم زد!

دو نکته:
۱-خیلی خیلی از اینکه پیگیری کردید ممنون
۲-قرار بود با هم pyqt یاد بگیریم پس چرا شما فقط قسمت اول آموزش رو قرار دادید؟ منتظریم ها...... لطفا این کار خیر - نیک - پسندیده و عالی رو ادامه بدید
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: OpenS در 29 شهریور 1388، 02:14 ق‌ظ
برای نت بینز هم این لینک که دادین کار میکنه؟؟؟
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: gbmtoday در 16 آذر 1388، 05:23 ب‌ظ
ببخشین یه سوالی ::

مثلا تو c++ وقتی بخوای یه برنامه بنویسی اونو داخل یک فایل .cpp ذخیره می کنی
بعد واسه کامپیلش می زنی  g++ a.cpp بعد کامپیل میشه و فایل اجرایی هم ساخته میشه ...

تو PyQt چه شکلی ؟؟!!‌ اصلا کامپایل به اون معنا هست ؟!؟!
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: MoOsHoK در 17 آذر 1388، 12:36 ق‌ظ
اقا C# یاد بدین
ایا اوبونتو  IDE برای C# داره؟
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: gbmtoday در 17 آذر 1388، 07:52 ب‌ظ

ایا اوبونتو  IDE برای C# داره؟


geany
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: سید محمود رضا سجادی در 30 آذر 1388، 02:33 ق‌ظ
اقا C# یاد بدین
ایا اوبونتو  IDE برای C# داره؟


mono
البته اگه به Microsoft Visual Studio عادت کرده باشی خیلی برات سخت میشه که بیای سراغ اینا
هرچند که به نظر من خیلی بهتر از VS هستند(اما عادت رو نمیشه کاریش کرد که  ;) میشه؟ )
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: سعید رسولی در 30 آذر 1388، 03:29 ق‌ظ
اقا C# یاد بدین
ایا اوبونتو  IDE برای C# داره؟
آقا #C رو ولش کن! برو پایتون یا جاوا یا ++C یاد بگیر! :D
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: yasergol در 29 خرداد 1389، 08:48 ب‌ظ
شرمنده که سوالم به pyqt ربط نداره و لی به qt  ربط داره
چجوری میشه یه شی از یک کلاسی که خودمون ایجاد کردیم رو توی فایل ذخیره کنیم و از روی فایل بخونیمش
مثلا در ادامه کد زیر باید چی بنویسیم؟
class myClass
{
public:
QString a;
int b;
myClass(QString c, int d)
{
a=c;
b=d;
}
}
......
int main(...)
{
QFile file(...)
file.open(...)
file.write???????
از راهنماییتون ممنون
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: fzerorubigd در 29 خرداد 1389، 10:43 ب‌ظ
به این کار میگن سریالیزه کردن اشیا توی stream
خیلی از فریم ورکها ازش پشتیبانی میکنن ولی بهتره خودت بنویسی. استفاده از اونها مستلزم استفاده از RTTI هستش و این اصلا ایده جالبی نیست (مثلا گوگل کلا استفاده از RTTI رو برای استیل خودش ممنوع کرده : http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Run-Time_Type_Information__RTTI_#Run-Time_Type_Information__RTTI_ البته واسه ایران نمایش داده نمیشه :)‌)

یه متد اضافه کن و توی اون متد خودت هر کدوم از عناصر رو به ترتیب توی Stream بنویس، بعد هم یه متد دیگه بنویس به همون ترتیب اینبار از فایل بخون. این روشیه که خیلی بهتره تا کدی که خودش یه کلاس رو آنالیز کنه و ذخیره کنه.
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: yasergol در 30 خرداد 1389، 12:28 ب‌ظ
Stream که میگی چیه؟ لطفا همین مثال خودم رو تکمیل کن
راستی این که یه تاپیک برای pyqt زدید همچین خوب به نظر نمیرسه! آخه یعنی چی؟ منظور از این تاپیک معلوم نیست. اگه منظور آموزش هست، پس کتاب به چه دردی میخوره؟ من خودم ۲ هفته است پایتون رو یاد گرفتم و میخوام pyqt کار کنم
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: fzerorubigd در 30 خرداد 1389، 01:48 ب‌ظ
stream در حالت کلی همه چیزه :) طبق یه فلسفه قدیمی (فلسفه Unix ) همه چیز فایله. -فلسفه ای که Linux هم ازش پیروی میکنه ولی Windows تو خیلی موارد نه - مثلا Console یه فایله. سخت افزارها فایلن. تو زبان C++ برای اینکه این قضیه با فایل فیزیکی قاطی نشه،‌در حالت کلی به اینها میگه stream و بعد فایلهای فیزیکی رو میگه فایل که یه شاخه از stream ها هستن.

من با QT میونم خوب نیست. ولی با C++ استاندارد مینویسم. میخوام ساده باشه، و به همین دلیل یه کم مشکل داره کار(با ایت اپراتور خوندن string زیاد جالب نیست، مثلا اگه رشته فاصله توش باشه وقت نوشتن درست نوشته میشه ولی وقت خوندن یه جورایی مشکل داریم یا مثلا اگه رشته خط جدید داشته باشه، راهش اینه که وقت نوشت اندازه رشته رو هم بنویسی و بعد وقت خوندن به همون اندازه بخونی. منتها یه کم شلوغ میشد بیخیالش شدم. تنبلیه و هزار دردسر!):

#include <iostream>
#include <string>
#include <fstream>

class MyClass{
  private :
    std::string str;
    int num;
  public : 
    MyClass(std::string s,int i){
      str=s;
      num=i;
    }
   
    ~MyClass(){
    }
   
    void show_data(){
      std::cout<< str << std::endl << num;
    }
   
    void save_to_stream(std::iostream *out){
      *out<< str << std::endl << num << std::endl;
    }
   
    void load_from_stream(std::iostream *in){
      *in >> str >> num;
    }
 
};

int main(int argc, char** argv)
{
  std::fstream out("/tmp/outfile",std::fstream::out);
  MyClass test("Test",10);
  test.save_to_stream(&out);
  out.close();
  /*
   * Your code...
   *
   *
   */
  std::fstream in("/tmp/outfile",std::fstream::in);
  MyClass test2("",0);
  test2.load_from_stream(&in);
  in.close();
  test2.show_data();
return 0;
}

اگه دقت کنی، دو تا متد save_to_stream و load_from_stream کاملا ساده یه iostream میگیرن و توی اون مینویسن. ولی من بهشون fstream پاس دادم. علت اینه که stream خیلی شاخه ها داره و فقط یه شاخه اون فایله. این دو متد میتونن کلاس منو تو هر کلاسی از فرزندان iostream ذخیره کنن.
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: yasergol در 02 تیر 1389، 07:27 ب‌ظ
fzerorubigd جان ممنونم  \\:D/
حالا یه سوال دیگه: من یه دیالوگ طراحی کردم یکمی دراز شده ;D چجوری از QScrollBar برای رفع مشکلم استفاده کنم؟ خیلی توی اینترنت گشتم، نفهمیدم. درضمن اگه میشه با استفاده از دیزاینر توضیح بدید
پیش پیش ممنون
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: fzerorubigd در 02 تیر 1389، 08:23 ب‌ظ
1- شاید بد نباشه سوال رو مستقل بپرسید.
۲- من اصلا میونه ای با QT ندارم. wx رو ترجیح میدم :)‌ در هر صورت اگه جداگانه بپرسی اهلش مطمئنا سوالتو بهتر میبینن و امکان جواب گرفتنت هم خیلی بیشتره.
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: yasergol در 25 تیر 1389، 12:43 ب‌ظ
اینجا مریوط به pyqt دیگه نه؟
پس سوال:
به این کد نگاه کنید. اگه خطی که کامنت شده رو غیر کامنت کنم و خطی که آخرش نوشتم chera?? را کامنت کنم یه ارور مسخره میگیره . در واقع لیبل رو نمیشناسه. واقعا چرا اینجوریه؟
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
import urllib.request
class tranc( QDialog ):
    def __init__( self, parent = None ):
        super( tranc, self ).__init__( parent )
        self.getFile()
#        self.labelDate = QLabel( 'Exchange Rates Date: Disconnect' )
        self.firstCombo = QComboBox()
        self.firstCombo.addItems( list( self.myDic.keys() ) )
        self.spinRate = QDoubleSpinBox()
        self.secondCombo = QComboBox()
        self.secondCombo.addItems( list( self.myDic.keys() ) )
        self.labelResult = QLabel()
        self.layout = QGridLayout()
        self.layout.addWidget( self.labelDate, 0, 0 )
        self.layout.addWidget( self.firstCombo, 1, 0 )
        self.layout.addWidget( self.spinRate, 1, 1 )
        self.layout.addWidget( self.secondCombo, 2, 0 )
        self.layout.addWidget( self.labelResult, 2, 1 )
        self.setLayout( self.layout )
        self.connect( self.firstCombo, SIGNAL( 'currentIndexChanged(int)' ), self.updateUi )
        self.connect( self.spinRate, SIGNAL( 'valueChanged(double)' ), self.updateUi )
        self.connect( self.secondCombo, SIGNAL( 'currentIndexChanged(int)' ), self.updateUi )
    def updateUi( self ):
        az = self.firstCombo.currentText()
        be = self.secondCombo.currentText()
        meghdar = self.spinRate.value()
        self.labelResult.setText( "%s" % ( ( self.myDic[be] * meghdar ) / self.myDic[az] ) )
    def getFile( self ):
        temp = urllib.request.urlretrieve( "http://www.bankofcanada.ca/en/markets/csv/exchange_eng.csv" )
        myFile = open( temp[0], 'r' )
        self.myDic = dict()
        self.labelDate = QLabel( 'Exchange Rates Date: Disconnect' )#Chera?????
        for line in myFile:
            if not line or line.startswith( ( '#', 'Closing ' ) ):
                continue
            else:
                myParts = line.split( ',' )
                if myParts[0].startswith( 'Date' ):
                    pass
                    self.labelDate.setText( "Exchange Rates Date: %s" % myParts[-1] )
                else:
                    self.myDic[str( myParts[0] )] = float( myParts[-1] )
app = QApplication( sys.argv )
wid = tranc()
wid.show()
app.exec_()

ممنون
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: parsibox در 07 امرداد 1389، 10:10 ق‌ظ
من برای فارسی نویسی از این چند کد زیر استفاده کردم :
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import *
from PyQt4.QtGui import *
QTextCodec.setCodecForTr(QTextCodec.codecForName("utf-8"))
QTextCodec.setCodecForCStrings(QTextCodec.codecForName("UTF-8"))

عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: GNU/M در 15 شهریور 1389، 09:36 ب‌ظ
برنامه های نوشته شده با QT در Gnome هم اجرا میشه؟
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: parsibox در 15 شهریور 1389، 10:10 ب‌ظ
بله اجرا میشند.
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: hadar در 05 مهر 1389، 08:08 ق‌ظ
من اموزش سی شارپ رو دیدم خیلی جاب هست که تو اینترنت گیر میاد اگه بتونی کدهای سی شارپ رو با کدهای پی کیو تی عوض کنی و یک سری تغیرات دیگه در این  کتاب که بصورت پی دی اف  ایجاد کنی تبدیل میشه به اموزش پی کیو تی.
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: nice_2000 در 25 دی 1389، 06:55 ب‌ظ
این یک قسمت از کد برنامه من هست:

def sbtnClicked(self):
self.statusbar.showMessage("در حال جستجو...")
print "Searching for Devices..."
devs=discover_devices()
if devs <> []:
self.rlist.clear()
for adev in devs:
ndev=lookup_name(adev)
self.rlist.insertItem(0,ndev+"\n"+adev)
print ndev+"\t"+adev
else:
self.statusbar.showMessage('.موردی یافت نشد')


خب با اجرای دستور زیر باید یه متن در نوار وضعیت نمایش داده بشه:
self.statusbar.showMessage("در حال جستجو...")
اما بلافاصله دستور بعد اجرا میشه و اون متن نمایش داده نمیشه و برنامه تا پایان عملیات به حالت هنگ میره:
devs=discover_devices()
حالا پیام نمایش داده میشه.
دستور بالا دستگاه های بلوتوث اطراف رو شناسایی میکنه و عملیات وقت گیری هم هست.

چه کار باید بکنم؟؟  ](*,)
عنوان: پاسخ به: PyQt : با هم یاد بگیریم :)
ارسال شده توسط: H2010n در 22 مهر 1390، 10:06 ق‌ظ
ببینم تاپیک مرد؟؟ کسی نیست اینجا آموزش بده؟؟
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: HSN6 در 25 خرداد 1391، 12:59 ب‌ظ
تازه python یاد گرفته بودیم.....
می‌خواستیم Pyqt یاد بگیریم......
 :'(
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: אוּרִיאֵל در 08 آذر 1391، 08:32 ب‌ظ
بنظرم بهتره همراه  تصویر باشه این آموزش … :)
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: sanaderi در 19 بهمن 1391، 10:56 ق‌ظ
از دوستان کسانی که مایلند با کیوت آشنا شوند و آن را یاد بگیرند دعوت می شود به ما ملحق شوند،فعلا هر 4 روز یک مقاله جدید در پایگاه پروژه کیوت فارسی به صورت رایگان منتشر می شود.قطع با پیوستن شما این امر شتاب بیشتری خواهد گرفت.
شک نکنید و کلیک کنید....qt-project.ir (http://qt-project.ir)
در این پایگاه پروژه هایی مطرح می شود و به صورت دسته جمعی کامل خواهد.پس از همین لحظه منتظر حضور گرم شما در پیشبرد دنیای کد باز هستیم.
qt-project.ir (http://qt-project.ir)
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: HsebliS در 19 بهمن 1391، 11:47 ق‌ظ
از دوستان کسانی که مایلند با کیوتی آشنا شوند و آن را یاد بگیرند دعوت می شود به ما ملحق شوند،فعلا هر 4 روز یک مقاله جدید در پایگاه پروژه کیوت فارسی به صورت رایگان منتشر می شود.قطع با پیوستن شما این امر شتاب بیشتری خواهد گرفت.
شک نکنید و کلیک کنید....qt-project.ir (http://qt-project.ir)
در این پایگاه پروژه هایی مطرح می شود و به صورت دسته جمعی کامل خواهد.پس از همین لحظه منتظر حضور گرم شما در پیشبرد دنیای کد باز هستیم.
qt-project.ir (http://qt-project.ir)
باحاله!
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: سید مسعود امامیان در 19 بهمن 1391، 12:47 ب‌ظ
از دوستان کسانی که مایلند با کیوتی آشنا شوند و آن را یاد بگیرند دعوت می شود به ما ملحق شوند،فعلا هر 4 روز یک مقاله جدید در پایگاه پروژه کیوت فارسی به صورت رایگان منتشر می شود.قطع با پیوستن شما این امر شتاب بیشتری خواهد گرفت.
شک نکنید و کلیک کنید....qt-project.ir (http://qt-project.ir)
در این پایگاه پروژه هایی مطرح می شود و به صورت دسته جمعی کامل خواهد.پس از همین لحظه منتظر حضور گرم شما در پیشبرد دنیای کد باز هستیم.
qt-project.ir (http://qt-project.ir)

خب هست که در همین ابتدا Qt رو کیوت تایپ کنید نه کیوتی .
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: MHA152 در 09 اسفند 1391، 09:37 ب‌ظ
خیلی ممنون از آموزش هاتون این ها فایل پی دی اف فارسی و درست و حسابی دارند؟
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: sanaderi در 12 اسفند 1391، 10:40 ب‌ظ
از دوستان کسانی که مایلند با کیوت آشنا شوند و آن را یاد بگیرند دعوت می شود به ما ملحق شوند،فعلا هر 4 روز یک مقاله جدید در پایگاه پروژه کیوت فارسی به صورت رایگان منتشر می شود.قطع با پیوستن شما این امر شتاب بیشتری خواهد گرفت.
شک نکنید و کلیک کنید....qt-project.ir (http://qt-project.ir)
در این پایگاه پروژه هایی مطرح می شود و به صورت دسته جمعی کامل خواهد.پس از همین لحظه منتظر حضور گرم شما در پیشبرد دنیای کد باز هستیم.
qt-project.ir (http://qt-project.ir)


خب هست که در همین ابتدا Qt رو کیوت تایپ کنید نه کیوتی .
8)
بله دوست عزیز فرمایش شما صحیح اصلاح شد! 8)
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Witch King در 23 اردیبهشت 1392، 10:23 ب‌ظ
من یه مشکلی دارم تو نصب پایکیوت در لینوکس مینت 13

اولا که من یک فایل رو دانلود کردم با حجم 12 مگابایت به اسم PyQt-x11-gpl-snapshot-4.10.2-8a31588c88b1.tar نمیدونم درست دانلود کردم یا نه
اگه میشه یه لینک درست و حسابی بدید به من من تو نت گشتم اما همش بین سایت های سورس فورگت و سایت اصلی پایتون و پایکیوت و هزار تا سایت دیگه سرگردان بودم و نمی دونستم کدوم رو دانلود کنم
و دومین مورد هم اینکه چه جوری باید این نرم افزار رو نصب کنم ؟

ببخشید من خیلی مبتدی هستم لینوکس شیرینه ولی مثله ویندوز راحت نیست !
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: xubuntu4iran در 23 اردیبهشت 1392، 10:52 ب‌ظ
http://ubuntuforums.org/showthread.php?t=1777613
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Bijan در 24 اردیبهشت 1392، 10:15 ب‌ظ
اگه بتونید همین آموزشهایی رو که میزارید در قالب فایل پی دی اف هم ارائه کنید خیلی عالی میشه
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: mpcreza در 30 خرداد 1392، 11:19 ب‌ظ
سوال در مورد پای کیوت رو میشه اینجا پرسید؟
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 04 شهریور 1392، 09:38 ب‌ظ
سلام من توی ترمینال qt رو کامل از طریق ترمینال نصب کردم  حدودآ حجمی که دانلود شد 200 مگ بود که نوشته بود 800 مگ فضا میگیره .
حالا وقتی تای‍پ می کنم : sudo apt-get install python-qt4 میگه که آخرنی ورژن نصب شده . ولی وقتی اولین برنامه ی همین تاپیک رو اجرا می کنم نمیشناسه :(
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 06 شهریور 1392، 12:27 ب‌ظ
کسی  نمیدونه ؟؟؟؟‌
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: xubuntu4iran در 09 شهریور 1392، 06:02 ب‌ظ
از ترمینال اجرا کن ببین چه اروری می ده؟
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 11 شهریور 1392، 12:47 ق‌ظ
از ترمینال اجرا کن ببین چه اروری می ده؟
چه دستوری بنویسم تو ترمینال ؟
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: xubuntu4iran در 11 شهریور 1392، 07:48 ق‌ظ
اینو
python filename.py
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: MHA152 در 11 شهریور 1392، 12:21 ب‌ظ
اینو
python filename.py
یا اگه با پایتون 3 کار می کنی بجای python باید بنویسی python3
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: אוּרִיאֵל در 11 شهریور 1392، 12:30 ب‌ظ
اینو
python filename.py
یا اگه با پایتون 3 کار می کنی بجای python باید بنویسی python3

نه خير هميشه هم اين طور نيست در مورد چيزى كه نميدونى نظر نده .
اول بزن python -V بعد نشون ميده ورژنو براى مثال واسه من ٣.٣.٢ هستش بعد اگه خواستى از ورژن ديگه استفاده كنى اول بايد ببينى نصب داريش يا نه پس بنويس python بعد تب بزن براى مثال اگه پايتون ٢.٧ رو داشته باشى احتمالاً python2 يا python27 رو دارى و اگه برعكس بود هم احتمالاً python3 يا python33 رو دارى البته ممكن هست بسته اى كه تب رو فعال ميكنه واسه كامل كرد رو نصب نداشته باشى كهدر اون صورت از اين دستورات به ترتيب استفاده كن :
ls /{bin,sbin,usr/{bin,sbin,local/{bin,sbin}}} | grep python
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: MHA152 در 11 شهریور 1392، 12:32 ب‌ظ
اینو
python filename.py
یا اگه با پایتون 3 کار می کنی بجای python باید بنویسی python3

نه خير هميشه هم اين طور نيست در مورد چيزى كه نميدونى نظر نده .
مگه من گفتم همیشه اینطوریه؟توی اوبونتو هم 2 و هم 3 نصب هست نم گفتم اگه برنامشون را با 3 نوشتند(که میدونند اینکار را کردند یا نه) باید از پایتون3 استفاده کنند
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: سالار مقدم در 11 شهریور 1392، 02:08 ب‌ظ
اینو
python filename.py
یا اگه با پایتون 3 کار می کنی بجای python باید بنویسی python3

نه خير هميشه هم اين طور نيست در مورد چيزى كه نميدونى نظر نده .
مگه من گفتم همیشه اینطوریه؟توی اوبونتو هم 2 و هم 3 نصب هست نم گفتم اگه برنامشون را با 3 نوشتند(که میدونند اینکار را کردند یا نه) باید از پایتون3 استفاده کنند
زدن تب بعد از نوشتن پایتون در تریسکل ۶(اوبونتو ۱۲.۰۴ آزاد)
nb@ism:~$ python
python     python2    python2.7
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 13 شهریور 1392، 10:10 ب‌ظ
اینو
python filename.py

اینو میگه :

    from PyQt4 import QtGui
ImportError: No module named PyQt4
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: xubuntu4iran در 13 شهریور 1392، 10:50 ب‌ظ
python می زنی چه ورژنی می ده؟
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 17 شهریور 1392، 11:41 ب‌ظ
python می زنی چه ورژنی می ده؟

2.7
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: xubuntu4iran در 17 شهریور 1392، 11:43 ب‌ظ
رو چه توزیعی هستی؟ نسخه اش چیه؟
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 18 شهریور 1392، 05:39 ب‌ظ
Ubuntu 12.04 LTS
الان نه میذاره که python qt نصب کنم و نه ازش اصتفاده کنم  !!! وقتی  می خوام نصب کنم میگه نصب هست رو سیستم .
وقتی برای اولین بار خواستم  کیوت رو نصب کنم  فکر کنم همه چیزش رو با هم دانلود کرده ولی فقط qt خالی هست pyqt  نیست :(
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 18 شهریور 1392، 05:39 ب‌ظ
Ubuntu 12.04 LTS
الان نه میذاره که python qt نصب کنم و نه ازش اصتفاده کنم  !!! وقتی  می خوام نصب کنم میگه نصب هست رو سیستم .
وقتی برای اولین بار خواستم  کیوت رو نصب کنم  فکر کنم همه چیزش رو با هم دانلود کرده ولی فقط qt خالی هست pyqt  نیست :(
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: xubuntu4iran در 18 شهریور 1392، 08:32 ب‌ظ
خروجی این دستور رو بذار
apt-cache policy python-qt4
عنوان: .
ارسال شده توسط: Elendil در 19 شهریور 1392، 01:04 ب‌ظ
python-qt4:
  Installed: 4.9.1-2ubuntu1
  Candidate: 4.9.1-2ubuntu1
  Version table:
 *** 4.9.1-2ubuntu1 0
        500 http://ir.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
        100 /var/lib/dpkg/status
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 20 شهریور 1392، 06:45 ب‌ظ
الان اینکه زده نصب شده پس مشکلش چیه ؟‌
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: xubuntu4iran در 22 شهریور 1392، 03:27 ق‌ظ
به احتمال زیاد داری با پایتون 3 اجرا می‌کنی چون همین الان با پایتون 3 اجرا کردم اروری رو که گفتی داد. با دستور زیر اجرا کن
python2.7 filename
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 22 شهریور 1392، 02:21 ب‌ظ
نه مطمئن هستم که پایتون 2.7 رو نصب کردم ، حالا یه بار دیگه  پایتون رو نصب می کنم
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 22 شهریور 1392، 06:20 ب‌ظ
ورژن 2.7.5 هست
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Elendil در 22 شهریور 1392، 09:26 ب‌ظ
بالاخره مشکل حل شد خدا را شکر !!!!!
PyQt رو پاک کردم و دوباره دانلودش کردم  ِ فایل های sip و pyqt  رو اکسترکت کردم و توی home/build کپی کردم.

cd ~/build/SIP
python2.7 configure.py
make
sudo make install

و بعد :
cd ~/build/PyQt
python2.7 configure.py
make
sudo make install

بعدش هم درست شد  . فکر کنم برای ورژن 3 هم جواب میده . فقط جای 2.7 باید 3 بذارین
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: علی حلاجی در 22 آبان 1392، 11:35 ق‌ظ
با سلام
من میخوام بر روی آندروید برنامه نویسی کنم با پایتون
من تونستم خود پایتون رو بیارم ولی پایکیوت رو میخوام بیارم بدون استفاده از minstro.
آیا کسی بلده؟
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: saman.TF در 05 دی 1392، 10:38 ب‌ظ
سلام به همه
گفته شده که یاد گیری بر هر کسی واجبه و از طرفی کسی که چیزی رو یاد گرفت باید زکاتش رو بده :)
حالا ما (من بعلاوه هر کسی که دوست داره) می خوایم PyQt یاد بگیریم هرکسی هست یا علی

سلام
میشه در ابتدا بگید که پایکیوت ۵ و تمام آنچه نیاز هست را از کجا دانلود و چجوری نصب کنم؟
تو لینک زیر گفته بود که باید به ترتیب نصب بشه میشه دقیق توضیح بدید؟

https://wrd.ir/%d9%be%d8%a7%db%8c%20%da%a9%db%8c%d9%88%d8%aa

اگه میشه مرحله به مرحله (هوای تازه کارا را داشته باشید) ;)
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: deadmarshal در 25 اسفند 1392، 08:18 ب‌ظ
دوستان لطفا یک آموزش کامل و (ترجیها تصویری) واسه نصب محیط برنامه نویسی پای کیوت بگذارید من هیچی نفهمیدم والا  :(
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: Hostile در 19 اردیبهشت 1393، 03:19 ب‌ظ
قرار بود باهم یاد بگیریم.....
اما جز 5 6 خط کد چیزی یاد نگرفتیم! 8)
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: deadmarshal در 28 اردیبهشت 1393، 09:49 ب‌ظ
قرار بود باهم یاد بگیریم.....
اما جز 5 6 خط کد چیزی یاد نگرفتیم! 8)
بزودی وقتی توی سایتمون مطلب گذاشتیم یاد میگیریم . pysocial.com (http://pysocial.com) .  تازه خودم هم میخوام یاد بگریم انشاالله   :)

البته قسمت پایتون داره تکمیل میشه
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: masoudrko در 11 آذر 1393، 11:56 ق‌ظ
سلام من pyat را روی آرچ لینوکس نصب کردم چطوری مطمین بشم درست کار میکنه یا مشکلش کجاست؟
این کد را زدم خطا داد مشکل کجاست؟
from PyQt4.QtCore import *
bash: from: command not found
لطفا یکمی توزیح بدید
و یک سوال دیگه داشتم اینه که اگه بخام سورس کد گنوم شل را ویرایش کنم و کمی شخصی سازی کنم ازکجا باید شروع کنم؟
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: مهدی پیشگوی در 06 شهریور 1394، 11:33 ب‌ظ
با پایتون سمت سرور کار نکردم. بیشتر دسکتاپ کار کردم. باهاش میشه سوکت پروگرمینگ کار کرد؟ من همزمانی نیاز دارم و با نود جی اس کار میکنم. میخام ببینم کودومش بهتره و سریعتر و راحت تر میشه توسعه داد
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: ramin9000 در 07 آبان 1396، 11:41 ق‌ظ
اگه بتونید همین آموزشهایی رو که میزارید در قالب فایل پی دی اف هم ارائه کنید خیلی عالی میشه
عنوان: پاسخ : PyQt : با هم یاد بگیریم :)
ارسال شده توسط: maziio در 15 امرداد 1397، 01:12 ب‌ظ
سلام
 ی سوال فنی دارم
دنبال راهی میگردم که بشه در جداول QtableWidget به نحوی جستجو کرد که مثلا :
 بافرض اینکه محتوای جدول ها text باشد " به برنامه سازی پایتون خوش آمدید"
اگر حرف یا هر کلمه ای رو جستجو کنیم فقط همون بصورت   Foreground رنگی بشه نه اینکه کل ردیف یا سلول که یافته های مورد نظر در اون هست.