Δημοσιεύτηκε: 23 Δεκ 2011, 12:57
@medigeek
Τελικά πήρα μερικές χρήσιμες απαντήσεις εδώ: http://stackoverflow.com/questions/8608 ... with-pyqt4
Το πρόβλημα ήταν ότι την ώρα που γινόταν η εκτέλεση της μεθόδου η φόρμα είχε ορισμένο ένα minimum_size το οποίο δεν προλάβαινε να αλλάξει γιατί η εκτέλεση της μεθόδου γινόταν ταυτόχρονα με το "κρύψιμο" των widget. Για τον λόγο αυτό μάλλον δουλεύει σωστά και η λύση που έδωσες καθώς το 2ο resize εκτελείται "λίγη ώρα μετά" αφού έχει οριστεί το νέο minimum size.
Η καλύτερη λύση σε αυτό που θέλω να κάνω όμως είναι να ορίσω ρητά το minimum size:
Στο sample του κώδικα που έδωσα δουλέυουν και οι υπόλοιπες λύσεις αλλά σε αυτό που θέλω να κάνω στην πραγματικότητα, δουλεύει μόνο το παραπάνω.
Δεν ξέρω αν γίνεται να αφαιρεθούν τελείως. Αλλά νομίζω ότι το καλύτερο είναι απλά να "κρύβονται". Επίσης τα widgets θα κρατάνε και τιμές που δεν πρέπει να χάνονται όταν αυτά θα κρύβονται.
Τελικά πήρα μερικές χρήσιμες απαντήσεις εδώ: 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 θα κρατάνε και τιμές που δεν πρέπει να χάνονται όταν αυτά θα κρύβονται.