__ziXet__
سه شنبه 24 دی 1387, 22: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 هست؟
یه چندوقتی هست پایتون رو شروع کردم و دارم ماژول های مختلف رو تست میکنم. برای 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 هست؟