2017-07-05 5 views
0

PyQT5のレイアウトが間違っています。私は間違って何をしていますか?あらかじめ定義された小さなフィールドサイズなどがありますか?メインウィンドウをQMainWindowとして作成し、内部にウィジェットを中央ウィジェットとして作成しました。これは、それがどのように見えるかです:PyQT5のレイアウトが間違っていますか?

enter image description here

class Main(QWidget): 
    """The main widget with label and LineEdit""" 
    def __init__(self, parent=None): 
     super().__init__(parent) 
     self.initUi() 

    def initUi(self): 
     """Initialize the UI of the main widget""" 
     self.mySourceLabel = QLabel("Select your file:") 
     self.mySourceLine = QLineEdit() 
     self.mySourceLine.setPlaceholderText("File name here") 

     # Set layout 
     grid = QGridLayout() 
     #grid.setSpacing(5) 
     grid.addWidget(self.mySourceLabel, 0, 0) 
     grid.addWidget(self.mySourceLine, 1, 0) 
     self.setLayout(grid) 

class MyApp(QMainWindow): 
    """Main application class""" 
    def __init__(self, parent=None): 
     super().__init__(parent) 
     self.initUi() 

    def initUi(self): 
     """Initialize UI of an application""" 
     # main window size, title 
     self.setGeometry(400, 300, 400, 300) 
     self.setWindowTitle("Version upgrade ") 

     # create instance of a class Main 
     self.main = Main(self) 

     # create central widget, create grid layout 
     centralWidget = QWidget() 
     centralLayout = QGridLayout() 
     centralWidget.setLayout(centralLayout) 
+0

は私の答えを参照してください:P – eyllanesc

答えて

1

あなたはQWidgetのに親を渡すと、これはその親に対する位置を見つけて、あなたが得たもののようなウィジェットを生成し、これを解決するだろう、レイアウトが使用され、QMainWindowは、要素を事前に定義しているので、特別なQWidgetのあるので、既にレイアウトを有する:ウィジェットがcentralwidgetウィットに追加する必要がありQMainWindowで

enter image description here

あなたのケースでは時間setCentralWidget機能、:

class MyApp(QMainWindow): 
    """Main application class""" 
    def __init__(self, parent=None): 
     super().__init__(parent) 
     self.initUi() 

    def initUi(self): 
     [...] 
     centralWidget = Main(self) 
     self.setCentralWidget(centralWidget) 

完全なコード:

class Main(QWidget): 
    """The main widget with label and LineEdit""" 
    def __init__(self, parent=None): 
     super().__init__(parent) 
     self.initUi() 

    def initUi(self): 
     """Initialize the UI of the main widget""" 
     self.mySourceLabel = QLabel("Select your file:") 
     self.mySourceLine = QLineEdit() 
     self.mySourceLine.setPlaceholderText("File name here") 

     # Set layout 
     grid = QGridLayout() 
     #grid.setSpacing(5) 
     grid.addWidget(self.mySourceLabel, 0, 0) 
     grid.addWidget(self.mySourceLine, 1, 0) 
     self.setLayout(grid) 

class MyApp(QMainWindow): 
    """Main application class""" 
    def __init__(self, parent=None): 
     super().__init__(parent) 
     self.initUi() 

    def initUi(self): 
     """Initialize UI of an application""" 
     # main window size, title 
     self.setGeometry(400, 300, 400, 300) 
     self.setWindowTitle("Version upgrade ") 

     # create central widget, create grid layout 
     centralWidget = Main(self) 
     self.setCentralWidget(centralWidget) 

スクリーンショット:

enter image description here

+0

は、今では明らかです。私のカスタムレイアウトでは、QMainWindowまたはQWidgetです。 QMainWindowの余分な説明をありがとう。 –

関連する問題