Bläddra i källkod

Add PyQt4 example

Thomas Kluyver 11 år sedan
förälder
incheckning
fc6cac46b5

+ 12 - 0
examples/pyqt/README

@@ -0,0 +1,12 @@
+This is an example that uses binary packages.
+
+To make the installer on a non-Windows system, download the PyQt4 installer from here:
+http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.10.4/PyQt4-4.10.4-gpl-Py3.3-Qt4.8.5-x32.exe
+
+Open it up with an archive tool, and extract the PyQt4 folder and sip.pyd from
+Lib/site-packages. Place them in a folder called pynsist_pkgs, and pynsist will
+use them in preference to the files it finds on your system.
+
+The '#!python3.3' line is used by the Python Windows launcher (PEP 397) to
+select which version of Python to run. This is important, because binary
+packages for Python 3.3 won't work on Python 3.4.

+ 12 - 0
examples/pyqt/installer.cfg

@@ -0,0 +1,12 @@
+[Application]
+name=List App (PyQt)
+version=1.0
+script=start.py
+
+[Python]
+version=3.3.5
+
+[Include]
+packages=listapp
+    PyQt4
+    sip

+ 33 - 0
examples/pyqt/listapp/__init__.py

@@ -0,0 +1,33 @@
+import sys
+from PyQt4 import QtGui
+
+from .main import Ui_MainWindow
+
+class Main(QtGui.QMainWindow):
+    def __init__(self):
+        super().__init__()
+        self.ui = Ui_MainWindow()
+        self.ui.setupUi(self)
+        
+        self.ui.add_button.clicked.connect(self.add_item)
+
+    def get_radio_option(self):
+        if self.ui.radio_1.isChecked():
+            return 'Thing 1'
+        elif self.ui.radio_2.isChecked():
+            return 'Thing 2'
+        elif self.ui.radio_3.isChecked():
+            return 'Thing 3'
+        elif self.ui.radio_4.isChecked():
+            return 'Last thing'
+        return 'No thing'
+        
+    def add_item(self):
+        text = self.get_radio_option()
+        QtGui.QListWidgetItem(text, self.ui.listWidget)        
+
+def main():
+    app = QtGui.QApplication(sys.argv)
+    window = Main()
+    window.show()
+    sys.exit(app.exec_())

+ 95 - 0
examples/pyqt/listapp/main.py

@@ -0,0 +1,95 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'buttonapp/main.ui'
+#
+# Created: Wed Apr  2 16:57:10 2014
+#      by: PyQt4 UI code generator 4.10.3
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt4 import QtCore, QtGui
+
+try:
+    _fromUtf8 = QtCore.QString.fromUtf8
+except AttributeError:
+    def _fromUtf8(s):
+        return s
+
+try:
+    _encoding = QtGui.QApplication.UnicodeUTF8
+    def _translate(context, text, disambig):
+        return QtGui.QApplication.translate(context, text, disambig, _encoding)
+except AttributeError:
+    def _translate(context, text, disambig):
+        return QtGui.QApplication.translate(context, text, disambig)
+
+class Ui_MainWindow(object):
+    def setupUi(self, MainWindow):
+        MainWindow.setObjectName(_fromUtf8("MainWindow"))
+        MainWindow.resize(393, 606)
+        self.centralwidget = QtGui.QWidget(MainWindow)
+        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
+        self.horizontalLayout = QtGui.QHBoxLayout(self.centralwidget)
+        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
+        self.groupBox = QtGui.QGroupBox(self.centralwidget)
+        self.groupBox.setObjectName(_fromUtf8("groupBox"))
+        self.verticalLayout = QtGui.QVBoxLayout(self.groupBox)
+        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
+        self.radio_1 = QtGui.QRadioButton(self.groupBox)
+        self.radio_1.setObjectName(_fromUtf8("radio_1"))
+        self.verticalLayout.addWidget(self.radio_1)
+        self.radio_2 = QtGui.QRadioButton(self.groupBox)
+        self.radio_2.setObjectName(_fromUtf8("radio_2"))
+        self.verticalLayout.addWidget(self.radio_2)
+        self.radio_3 = QtGui.QRadioButton(self.groupBox)
+        self.radio_3.setObjectName(_fromUtf8("radio_3"))
+        self.verticalLayout.addWidget(self.radio_3)
+        self.radio_4 = QtGui.QRadioButton(self.groupBox)
+        self.radio_4.setObjectName(_fromUtf8("radio_4"))
+        self.verticalLayout.addWidget(self.radio_4)
+        self.add_button = QtGui.QPushButton(self.groupBox)
+        self.add_button.setObjectName(_fromUtf8("add_button"))
+        self.verticalLayout.addWidget(self.add_button)
+        spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+        self.verticalLayout.addItem(spacerItem)
+        self.horizontalLayout.addWidget(self.groupBox)
+        self.listWidget = QtGui.QListWidget(self.centralwidget)
+        self.listWidget.setObjectName(_fromUtf8("listWidget"))
+        self.horizontalLayout.addWidget(self.listWidget)
+        MainWindow.setCentralWidget(self.centralwidget)
+        self.menubar = QtGui.QMenuBar(MainWindow)
+        self.menubar.setGeometry(QtCore.QRect(0, 0, 393, 24))
+        self.menubar.setObjectName(_fromUtf8("menubar"))
+        self.menuFile = QtGui.QMenu(self.menubar)
+        self.menuFile.setObjectName(_fromUtf8("menuFile"))
+        MainWindow.setMenuBar(self.menubar)
+        self.statusbar = QtGui.QStatusBar(MainWindow)
+        self.statusbar.setObjectName(_fromUtf8("statusbar"))
+        MainWindow.setStatusBar(self.statusbar)
+        self.actionNew = QtGui.QAction(MainWindow)
+        self.actionNew.setObjectName(_fromUtf8("actionNew"))
+        self.actionOpen = QtGui.QAction(MainWindow)
+        self.actionOpen.setObjectName(_fromUtf8("actionOpen"))
+        self.actionSave = QtGui.QAction(MainWindow)
+        self.actionSave.setObjectName(_fromUtf8("actionSave"))
+        self.menuFile.addAction(self.actionNew)
+        self.menuFile.addAction(self.actionOpen)
+        self.menuFile.addAction(self.actionSave)
+        self.menubar.addAction(self.menuFile.menuAction())
+
+        self.retranslateUi(MainWindow)
+        QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+    def retranslateUi(self, MainWindow):
+        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
+        self.groupBox.setTitle(_translate("MainWindow", "Click things", None))
+        self.radio_1.setText(_translate("MainWindow", "Thing 1", None))
+        self.radio_2.setText(_translate("MainWindow", "Thing 2", None))
+        self.radio_3.setText(_translate("MainWindow", "Thing 3", None))
+        self.radio_4.setText(_translate("MainWindow", "Last thing", None))
+        self.add_button.setText(_translate("MainWindow", "Add to list", None))
+        self.menuFile.setTitle(_translate("MainWindow", "File", None))
+        self.actionNew.setText(_translate("MainWindow", "New", None))
+        self.actionOpen.setText(_translate("MainWindow", "Open", None))
+        self.actionSave.setText(_translate("MainWindow", "Save", None))
+

+ 118 - 0
examples/pyqt/listapp/main.ui

@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>393</width>
+    <height>606</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QHBoxLayout" name="horizontalLayout">
+    <item>
+     <widget class="QGroupBox" name="groupBox">
+      <property name="title">
+       <string>Click things</string>
+      </property>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QRadioButton" name="radio_1">
+         <property name="text">
+          <string>Thing 1</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QRadioButton" name="radio_2">
+         <property name="text">
+          <string>Thing 2</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QRadioButton" name="radio_3">
+         <property name="text">
+          <string>Thing 3</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QRadioButton" name="radio_4">
+         <property name="text">
+          <string>Last thing</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="add_button">
+         <property name="text">
+          <string>Add to list</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item>
+     <widget class="QListWidget" name="listWidget"/>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>393</width>
+     <height>24</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>File</string>
+    </property>
+    <addaction name="actionNew"/>
+    <addaction name="actionOpen"/>
+    <addaction name="actionSave"/>
+   </widget>
+   <addaction name="menuFile"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+  <action name="actionNew">
+   <property name="text">
+    <string>New</string>
+   </property>
+  </action>
+  <action name="actionOpen">
+   <property name="text">
+    <string>Open</string>
+   </property>
+  </action>
+  <action name="actionSave">
+   <property name="text">
+    <string>Save</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 5 - 0
examples/pyqt/start.py

@@ -0,0 +1,5 @@
+#!python3.3
+import sys
+sys.path.insert(0, 'pkgs')
+import listapp
+listapp.main()