Δημοσιεύτηκε: 22 Δεκ 2011, 18:10
από Ilias95
Παραθέτω ένα μικρό παράδειγμα για να εξηγήσω το πρόβλημα που αντιμετωπίζω:

Κώδικας: Επιλογή όλων
#!/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.