Herkese Merhaba.
PySide/PyQt5 uygulamamda bir pencereyi başlangıçtaki genişlik/yükseklik oranını koruyarak yeniden boyutlandırmak istiyorum. yatay boyutlandırmada dikey de uzaması lazım oranı koruyacak şekilde. Dikey için de yatay aynı şekilde.
Çalışan kod şu şekilde:
class PdfPageCombinator(QMainWindow):
def __init__(self):
super().__init__()
#self.ui = Ui_MainWindow()
#self.ui.setupUi(self)
self.setGeometry(0, 0, 978, 822)
# Pencerenin başlangıç boyutlarını alıyoruz
self.initial_width = self.width()
self.initial_height = self.height()
# Başlangıç en/boy oranını hesaplıyoruz
self.aspect_ratio = round(self.initial_width / self.initial_height,2)
print("self.aspect_ratio:",self.aspect_ratio)
self.show()
def resizeEvent(self, event):
new_width = event.size().width()
new_height = event.size().height()
#print("new_width:",new_width,"new_height:",new_height)
if new_height != self.initial_height:
new_height = self.height()
print("dikey değişiyor...")
# Genişliği en/boy oranına göre yeniden hesapla
new_width = int(new_height * self.aspect_ratio)
elif new_width != self.initial_width:
new_width = self.width()
print("yatay değişiyor...")
#Yüksekliği en/boy oranına göre yeniden hesapla
new_height = int(new_width / self.aspect_ratio)
self.resize(new_width, new_height)
# Orijinal resizeEvent'i çalıştır
super().resizeEvent(event)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = PdfPageCombinator()
sys.exit(app.exec_())
burada dikey veya çapraz uzatırsam ya da kısaltırsam sorunsuz istediğimi yapar. Ama yatayda ilk kez uzatırsam tek sefer yapar sonra yapmaz.
Vakit ayırıp bakacak herkese şimdiden teşekkürler.