2016-09-13 6 views
0

すべてのウィジェットにサイズを与えるためにsetGeometryメソッドを使用しました。私はそれが最善のことではないことを知っていますが、私がPyQtを使うのはこれが初めてです。 問題は今最大化ボタンをクリックすると、私のすべてのウィジェットが同じままになっているということです... 私はresizeEventを使用しようとしましたが、PyQtはこのイベントの送信者の間で何の違いもありません:ウインドウが最大化ボタンでサイズ変更されたとき、またはウインドウを引き伸ばしてマウスを使用しているとき。サイズ変更メインウィンドウ

私が探しているもの: この信号を捕捉してsetGeometry()メソッドを適用できるように、最大​​化ボタンが押されたときに特定の信号が送信されますが、今回はフルスクリーンモードに適合します。 しかし、そのようなものが存在するかどうかわかりません...

もしそうでなければ、私は必要なことをする別の方法がありますか?

読んでいただきありがとうございます!

答えて

0

あなたは完全に間違った方法でこれについて考えています。 Qtはこの種のものを自動的に処理します(正しいAPIを使用している限り)。

私はあなたが次の操作を行い勧め:

  1. 読むQtのLayout Management Overview
  2. Qt Designerの使い方を学んでください(特にUsing Layoutsの部分)。
  3. PyQt DocumentationUsing Qt Designer Guideをお読みください。

また、ここでは簡単なデモスクリプトです:

from PyQt4 import QtCore, QtGui 

class Window(QtGui.QWidget): 
    def __init__(self): 
     super(Window, self).__init__() 
     self.label = QtGui.QLabel('Layout Management Example', self) 
     self.label.setAlignment(QtCore.Qt.AlignCenter) 
     self.edit1 = QtGui.QLineEdit(self) 
     self.edit2 = QtGui.QLineEdit(self) 
     self.button = QtGui.QPushButton('Maximize', self) 
     self.button.clicked.connect(self.handleButton) 
     layout = QtGui.QGridLayout(self) 
     layout.addWidget(self.label, 0, 0, 1, 2) 
     layout.addWidget(self.edit1, 1, 0) 
     layout.addWidget(self.edit2, 1, 1) 
     layout.addWidget(self.button, 2, 0, 1, 2) 

    def handleButton(self): 
     if self.button.text() == 'Maximize': 
      self.button.setText('Restore') 
      self.showMaximized() 
     else: 
      self.button.setText('Maximize') 
      self.showNormal() 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Window() 
    window.setGeometry(500, 150, 500, 300) 
    window.show() 
    sys.exit(app.exec_()) 
関連する問題