gccallie
gccallie

Reputation: 127

How to add text (QLabel) outside (on top) grid layout?

I'm using Pyqt5 to build a very simple GUI. In this window I want to place some text with info on top of a grid layout. The grid is made of 2 columns and I want the text to go full width (like HTML attribute colspan). I can't find a way to place the entirety of the text.

Text is: "Return a list of same-distance points couples from a file of 2D points"

window

I tried setting the Qlabel containing the text as the 1x1 element of the grid and give it a width of 2 columns, I tried place i manually with the move function; either of these solutions does not show the text properly.

class MatchDistance(QWidget):

   def initUI(self):
       super().initUI()
       self.setWindowTitle('Match distance')

       info_label = QLabel("Return a list of same-distance points couples from a file of 2D points", self)
       info_label.move(10, 10)

      # QPushButton and QLineEdit setup [...]

       self.grid.addWidget(self.input_file_1, 1, 1)
       self.grid.addWidget(self.output_file, 2, 1)
       self.grid.addWidget(self.btn_input_1, 1, 2)
       self.grid.addWidget(self.btn_output, 2, 2)
       self.grid.addWidget(self.btn_run, 3, 2)
       self.grid.addWidget(self.btn_mainwindow, 4, 2)

       self.setWindowTitle("script#1: Match distance")
       self.show()

Upvotes: 1

Views: 1392

Answers (1)

eyllanesc
eyllanesc

Reputation: 243897

Your description is confusing so I will not refer to your implementation, but to respond you must take into account the following:

  • The indices that set the row and column start at 0.
  • If you use the layouts then you can no longer use move since the position is handled by the layout.

Considering the above, the solution is:

self.grid.addWidget(info_label, 0, 0, 1, 2)
self.grid.addWidget(self.input_file_1, 1, 0)
self.grid.addWidget(self.output_file, 2, 0)
self.grid.addWidget(self.btn_input_1, 1, 1)
self.grid.addWidget(self.btn_output, 2, 1)
self.grid.addWidget(self.btn_run, 3, 1)
self.grid.addWidget(self.btn_mainwindow, 4, 1)

Upvotes: 1

Related Questions