Τα πάντα για την Python

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την Python

Δημοσίευσηαπό clepto » 21 Δεκ 2011, 16:18

:twisted: :twisted: :twisted: :-x :-x :crazy: :crazy: :evil: θα τρελαθω
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό pmav99 » 21 Δεκ 2011, 17:03

http://www.riverbankcomputing.co.uk/sta ... ml#details

κανονικά έχει μεθόδους addItem, addItems, InsertItem κτλ. Αν θες μπορείς εύκολα να ψάχνεις στο namespace του PyQt με την Ipython (αν και εγώ προσωπικά προτιμώ να τα βλέπω από το παραπάνω link
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό sokoban4ever » 22 Δεκ 2011, 01:38

pmav99 έγραψε:Βγήκε το ipython 0.12
http://ipython.org/ipython-doc/rel-0.12 ... n0.12.html

Δοκιμάστε το notebook. Τα σπάει!


Πολύ καλό @pmav99
:thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup:

Λοιπόν παιδιά
Για να εγκαταστήσετε την ipython 0.12
κάντε
Κώδικας: Επιλογή όλων
sudo apt-get --purge remove ipython

για να απεγκαταστήσετε την παλιά ipython (αν την έχετε εγκαταστήσει με apt-get ή synaptic βέβαια..)
προσοχή η παράμετρος --purge διαγράφει ενδεχωμένος το .ipython φάκελο από το ~/ αν είναι αφαιρέστε την παράμετρο

μετά
Κώδικας: Επιλογή όλων
sudo easy_install ipython

για να εγκαταστήσετε την νέα ipython που περιέχει τo notebook interface μέσα στον browser

έπειτα
Κώδικας: Επιλογή όλων
sudo easy_install tornado

για τον tornado server

και
Κώδικας: Επιλογή όλων
sudo easy_install pyzmq

για την 0MQ βιλβλιοθήκη (προσφέρει message passing concurrency)
τέλος τρέχετε
Κώδικας: Επιλογή όλων
ipython notebook


*Σημείωση :
Σε περίπτωση που δεν τρέχει το πιθανότερο είαναι να σας ζητήσει να εγκαταστήσετε κάποιο module που πιθανον να μην έχετε σε αυτή την περίπτωση
για παράδειγμα το module 0bliax
κάντε
είτε
Κώδικας: Επιλογή όλων
apt-cache search 0bliax

ή
Κώδικας: Επιλογή όλων
sudo easy_install -n 0bliax

ελέγξτε την έκδοση και εγκαταστήστε
(είτε με apt-get install ...είτε με easy_install ...)
αν παρουσιαστεί κάτι άλλο βλέπουμε στο forum...
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό pmav99 » 22 Δεκ 2011, 03:36

@sokoban + λοιπούς python-ιστες

Καλύτερα μη χρησιμοποιείται το easy install αλλά το pip

http://s3.pixane.com/python_comrades.pn ... ibleperson
http://stackoverflow.com/questions/3220 ... sy-install
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 22 Δεκ 2011, 18:10

Παραθέτω ένα μικρό παράδειγμα για να εξηγήσω το πρόβλημα που αντιμετωπίζω:

Κώδικας: Επιλογή όλων
#!/usr/bin/python2

import sys
from PyQt4.QtGui import (QApplication, QHBoxLayout, QVBoxLayout, QDialog,
QFrame, QPushButton, QComboBox)

class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)

moreButton = QPushButton('moreButton')
moreButton.setCheckable(True)
resizeButton = QPushButton('Resize')
button = QPushButton('button')
combo = QComboBox()
combo.addItems(['item1', 'item2'])

layout1 = QHBoxLayout()
layout1.addWidget(moreButton)
layout1.addWidget(resizeButton)

layout2 = QHBoxLayout()
layout2.addWidget(combo)
layout2.addWidget(button)
self.frame = QFrame()
self.frame.setLayout(layout2)
self.frame.hide()

layout3 = QVBoxLayout()
layout3.addLayout(layout1)
layout3.addWidget(self.frame)

moreButton.toggled.connect(self.frame.setVisible)
moreButton.clicked.connect(self.method)
resizeButton.clicked.connect(self.method)

self.setLayout(layout3)
self.resize(630, 50)

def method(self):
if self.frame.isVisible():
self.resize(630, 150)
else:
self.resize(630, 50)

app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

Με την εκτέλεση της method όταν πατιέται το moreButton και το frame "κρύβεται" περιμένω η φόρμα να ξαναπάρει το αρχικό της μέγεθος. Αυτό όμως δεν συμβαίνει.
Αν πατήσω το visibleButton που εκτελεί ακριβώς την ίδια μέθοδο το resize γίνεται σωστά!
Επίσης αν αλλάξω την method σε:
Κώδικας: Επιλογή όλων
def method(self):
if self.frame.isVisible():
self.resize(630, 150)
else:
self.resize(630, 350)

τότε το resize γίνεται κανονικά και από το moreButton!!! :eh:

Καμία ιδέα για το τι μπορεί να φταίει;

Edit: Διόρθωσα τον κώδικα. Κατά λάθος είχα αφήσει self.resize(630, 350) στην method.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό pmav99 » 22 Δεκ 2011, 18:27

Ηλία, αν κατάλαβα καλά τι θες να κάνεις, μήπως είναι πιο εύκολο να χρησιμοποιήσεις το QStackWidget?

επίσης, μήπως αντί για QPushButton θέλεις να χρησιμοποιήσεις το QToolButton?
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 22 Δεκ 2011, 18:47

pmav99 έγραψε:Ηλία, αν κατάλαβα καλά τι θες να κάνεις, μήπως είναι πιο εύκολο να χρησιμοποιήσεις το QStackWidget?

Όχι θέλω απλά να κρύβω και να εμφανίζω το frame ανάλογα με το αν το moreButton είναι πατημένο ή όχι. Κάτι σαν τα spoilers στα forums ας πούμε.
Η λειτουργία του StackWidget είναι διαφορετική.

pmav99 έγραψε:επίσης, μήπως αντί για QPushButton θέλεις να χρησιμοποιήσεις το QToolButton?

Ίσως, αν και δεν θα χει ουσιαστική διαφορά. Και τα δύο απλά τα κάνω checkable.

Αλλά το θέμα μου δεν είναι εκεί.
Δεν μπορώ να βρω καμία πιθανή αιτία για το ότι όταν έχω self.resize(630, 350) γίνεται κανονικά το resize ενώ όταν το κάνω self.resize(630, 50) δεν γίνεται. :P
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό medigeek » 23 Δεκ 2011, 10:58

Ilias95 έγραψε:περιμένω η φόρμα να ξαναπάρει το αρχικό της μέγεθος. Αυτό όμως δεν συμβαίνει.

Το ίδιο συμβαίνει και στο gtk, όμως δεν με ενόχλησε ποτέ.

Δεν έχω δουλέψει ποτέ με qt4, αλλά υπάρχει κάτι αντίστοιχο εδώ, δεν ξέρω αν σε βοηθάει: http://stackoverflow.com/questions/2293 ... ize-window

Επίσης, βρήκα πως εκτελώντας δύο φορές την εντολή δουλεύει:
Κώδικας: Επιλογή όλων
def method(self):
if self.frame.isVisible():
self.resize(630, 150)
else:
self.resize(630, 50)
self.resize(630, 50)


Τέλος, μήπως αντί resize πρέπει να προσθαφαιρούνται τα widgets δυναμικά (καθώς τρέχει το πρόγραμμα να αφαιρέσεις το widget, αν γίνεται);
Διαβάζοντας βρήκα αυτό: http://www.learningpython.com/2008/09/2 ... pplication
έγραψε:When you resize the window (or area), geometry manager’s will automatically adjust the size and positions of their child widgets to accommodate the new size.
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 23 Δεκ 2011, 12:57

@medigeek
Τελικά πήρα μερικές χρήσιμες απαντήσεις εδώ: http://stackoverflow.com/questions/8608 ... with-pyqt4
Το πρόβλημα ήταν ότι την ώρα που γινόταν η εκτέλεση της μεθόδου η φόρμα είχε ορισμένο ένα minimum_size το οποίο δεν προλάβαινε να αλλάξει γιατί η εκτέλεση της μεθόδου γινόταν ταυτόχρονα με το "κρύψιμο" των widget. Για τον λόγο αυτό μάλλον δουλεύει σωστά και η λύση που έδωσες καθώς το 2ο resize εκτελείται "λίγη ώρα μετά" αφού έχει οριστεί το νέο minimum size.

Η καλύτερη λύση σε αυτό που θέλω να κάνω όμως είναι να ορίσω ρητά το minimum size:
Κώδικας: Επιλογή όλων
def method(self):
if self.frame.isVisible():
self.resize(630, 150)
else:
self.setMinimumSize(630, 50)
self.resize(630, 50)


Στο sample του κώδικα που έδωσα δουλέυουν και οι υπόλοιπες λύσεις αλλά σε αυτό που θέλω να κάνω στην πραγματικότητα, δουλεύει μόνο το παραπάνω.

medigeek έγραψε:Τέλος, μήπως αντί resize πρέπει να προσθαφαιρούνται τα widgets δυναμικά (καθώς τρέχει το πρόγραμμα να αφαιρέσεις το widget, αν γίνεται);

Δεν ξέρω αν γίνεται να αφαιρεθούν τελείως. Αλλά νομίζω ότι το καλύτερο είναι απλά να "κρύβονται". Επίσης τα widgets θα κρατάνε και τιμές που δεν πρέπει να χάνονται όταν αυτά θα κρύβονται.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό clepto » 28 Δεκ 2011, 20:47

τις απορίες για το Pyqt εδώ viewtopic.php?f=6&t=21584
συμφωνείτε να μεταφέρω τις δημοσιεύσεις για το pyqt σε αυτό το θέμα; αφού λύσουμε την απορία μου για να μην μπερδευτούν....
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron