現在、Pixmapを動的にリサイズする問題を解決しようとしていますが、QMainWindowの1つのコーナーにQLabelがあり、 KeepAspectRatioのラベルのサイズで指定します。どちらのスプリッタも信号に接続されており、できるだけピックスマップを調整してできるだけ収まるようにしています。PyQt5 Pixmapのラベルでスプリッタを使用してダイナミックリサイズ
私が遭遇した問題は、ピクスマップがすでに使用可能なすべてのスペースに適合しているときにサイズを減らす方法を理解できないことです。
これはピックスマップの設定です:
self.picture_field.setStyleSheet("border: 4px solid")
self.pixmap = QPixmap('dandelion.jpg')
self.picture_field.setAlignment(Qt.AlignCenter)
self.picture_field.setPixmap(self.pixmap.scaled(self.picture_field.width()-8,
self.picture_field.height()-8, Qt.KeepAspectRatio))
-8それが欠けていた場合は、理由の国境の存在である必要があり、ウィジェットはQsplittersの
つすべての変更に大きくなっ:
right_splitter = QSplitter(Qt.Vertical)
right_splitter.addWidget(self.picture_field)
right_splitter.addWidget(self.person_field)
right_splitter.splitterMoved.connect(self.dynamic_scaling)
Person_fieldは単純QTreeView
動的サウスカロライナaling機能:
def dynamic_scaling(self):
self.picture_field.setPixmap(self.pixmap.scaled(self.picture_field.width()-8, self.picture_field.height()-8, Qt.KeepAspectRatio))
編集:私はもう少しそれをテストし、それはそう、ピックスマップが反応することはなく、一度だけの幅または高さのどちらかが半分になります。
w = QtGui.Qlabel.width();
h = QtGui.Qlabel.height();
#set a scaled pixmap to a w x h window keeping its aspect ratio
QtGui.Qlabel.setPixmap(p.scaled(w, h, Qt.KeepAspectRatio))
は今h
とw
を変更しよう:
あなたのコードをよりよく理解することができます。 – eyllanesc
検証可能なコード(実際に実行して問題のある箇所を確認できるコード)を提供できますか? – Matho
これは非常に面倒なのでコード全体を削除したくないだけですが、ここでは修正して1つのファイルとして機能するようにします:https://pastebin.com/RNDvkmy2 –