PDA

View Full Version : سوال: چرا pyQt اینجوریه؟



__ziXet__
سه شنبه 24 دی 1387, 21:46 عصر
سلام

یه چندوقتی هست پایتون رو شروع کردم و دارم ماژول های مختلف رو تست میکنم. برای GUI هم رفتم سراغ Qt ، خیلی ساده بود ولی اون برنامه دیساینرش یجوری بود! اولا یه فایل xml با پسوند ui میده بیرون ثانیا اصلا event ها رو نمیشه توش فهمید چی به چیه؟! چجوری میشه با کلیک بروی ه button یه تابع رو کال کرد! رفتم تو exampleهاش یه چیزایی فهمیدم ولی خیلی خوب متوجه نمیشم کدهارو! نمیدونم چرا !
مثلا اینو ببینید:

#!/usr/bin/env python
import sys

from PyQt4 import QtCore, QtGui, uic


app = QtGui.QApplication(sys.argv)
form_class, base_class = uic.loadUiType("demo.ui")

class DemoImpl(QtGui.QDialog, form_class):
def __init__(self, *args):
QtGui.QWidget.__init__(self, *args)

self.setupUi(self)

@QtCore.pyqtSignature("")
def on_button1_clicked(self):
for s in "This is a demo".split(" "):
self.list.addItem(s)


form = DemoImpl()
form.show()
app.exec_()


اینم demo.ui :

<ui version="4.0" >
<author></author>
<comment></comment>
<exportmacro></exportmacro>
<class>DemoDialog</class>
<widget class="QDialog" name="DemoDialog" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle" >
<string>PyUIC4 Demo Dialog</string>
</property>
<layout class="QGridLayout" >
<property name="margin" >
<number>9</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item row="2" column="0" >
<spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" >
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0" >
<spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" >
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item rowspan="3" row="0" column="1" >
<widget class="QListWidget" name="list" />
</item>
<item row="1" column="0" >
<layout class="QVBoxLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item>
<widget class="QPushButton" name="button1" >
<property name="text" >
<string>Add items</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="button2" >
<property name="text" >
<string>Clear list</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0" colspan="2" >
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item>
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" >
<size>
<width>131</width>
<height>31</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="okButton" >
<property name="text" >
<string>OK</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<pixmapfunction></pixmapfunction>
<resources/>
<connections>
<connection>
<sender>okButton</sender>
<signal>clicked()</signal>
<receiver>DemoDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel" >
<x>369</x>
<y>256</y>
</hint>
<hint type="destinationlabel" >
<x>96</x>
<y>254</y>
</hint>
</hints>
</connection>
<connection>
<sender>button2</sender>
<signal>clicked()</signal>
<receiver>list</receiver>
<slot>clear()</slot>
<hints>
<hint type="sourcelabel" >
<x>92</x>
<y>112</y>
</hint>
<hint type="destinationlabel" >
<x>279</x>
<y>123</y>
</hint>
</hints>
</connection>
</connections>
</ui>

نمیدونم مشکل چیه! مثلا در خط @QtCore.pyqtSignature("") اگه اون علامت @ رو حذف کنم اون حلقه for بعدش دوبار اجرا میشه!!!

واسه بعضی از چیزا نمیتونم تو کد لیلشو گیر بیارم!

نمیدونم شاید مشکل از منه!

کسی با GTK آشنایی داره؟ بهتر از QT هست؟

__ziXet__
چهارشنبه 25 دی 1387, 10:44 صبح
خب ممنون از اینکه جواب دادین!!

من gtk رو امتحان کردم خیلی بهتر از Qt بود از نظر خوانایی کدها ولی مشکل اینه که یه designer واسه اون گیر نیاوردم! منظورم از designer همون designerی هست که Qt خودش همراه ماژول نصب میکنه و کد xml تولید میکنه.
یدونه هست بنام glade که تو لینوکس اجرا میشه ولی من فعلا دارم تو ویندوز کار میکنم و امکان رفتن به لینوکس رو ندارم.

الان شما از چه GUIی استفاده میکنین؟! راضی هستین؟
با UI کار میکنید یا خط به خط کد مینویسین و آبجکت ها رو اضافه میکنید؟!

__ziXet__
چهارشنبه 25 دی 1387, 10:47 صبح
راستی آقای بیاضی! چرا pylearn تعطیل شده؟!!!!
آدرسش عوض شده؟

Mehdi Asgari
چهارشنبه 25 دی 1387, 10:51 صبح
wxPython رو تست کردی ؟ یه binding از wxWidgets هست برای پایتون
برای wxPython می تونی از FarPy GUI استفاده کنی
(BoaConstructor رو هم شنیدم ولی کار نکردم. اونم برای wxPython هست)
اینجا رو هم ببین: http://wiki.python.org/moin/GuiProgramming

trustmiracle
چهارشنبه 25 دی 1387, 10:52 صبح
سلام
با اجازه ی آقای بیاضی:
pylearn تعطیل نشده و آدرش هم این هست:
[/URL][URL]http://www.pylearn.com/fa/forum/index.php (http://www.pylearn.com/fa/forum/index.php)
در این موردی هم که گفتید به نظرم میاد یه آموزش در سایت pylearn بود باز خودتون بگردید

__ziXet__
چهارشنبه 25 دی 1387, 11:54 صبح
سلام
با اجازه ی آقای بیاضی:
pylearn تعطیل نشده و آدرش هم این هست:
[/URL][URL]http://www.pylearn.com/fa/forum/index.php (http://www.pylearn.com/fa/forum/index.php)
در این موردی هم که گفتید به نظرم میاد یه آموزش در سایت pylearn بود باز خودتون بگردید
ممنون از پاسختون!

من Glade نسخه ویندوزش رو گیر آوردم. دارم باهاش ور میرم.

راستی کلا این دامین pylearn پارک شده! شما میتونید باز کنید سایتو؟
واسه من ریدارکت میشه به:
http://www2.searchresultsdirect.com/parking.php4?domain=pylearn.com&registrar=273212&keyword=software+downloads&eq=d98f795f7b57942cf59c3f17347bd51e67edda7e339c793 555d57e8d8245c0459fe229887c1a18f7b0670e85383878a97 4013e4ebf9c883d2ee909588a627081417cbb2355a5d6b155c 9e3418974013db34df2b3f4eefdbf4861da7dc667aad3a143f 8c17096ce9fbded37a8b854a366fe3229f6cc9f4e468428972 bfc9e032e88d62715450c4016b13abe37c981af25790ce7646 ca86b1da362fe08867257ef5fcddec15d6d91f138ce1e99cac d105ed9e5e0d00ecb9ff057f2266157892e92

trustmiracle
شنبه 19 بهمن 1387, 23:04 عصر
سلام
ببخشید متوجه پستتون نشده بودم.
الان دیدم
من تا حالا با بازکردن این سایت مشکلی نداشتم. یک بار دیگه امتحان کنید
http://www.pylearn.com/fa/forum

__ziXet__
چهارشنبه 23 بهمن 1387, 12:45 عصر
سلام
ببخشید متوجه پستتون نشده بودم.
الان دیدم
من تا حالا با بازکردن این سایت مشکلی نداشتم. یک بار دیگه امتحان کنید
http://www.pylearn.com/fa/forum
یه ماه بعد!!

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

ممنون