Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. Adding buttons to layout
Forum Updated to NodeBB v4.3 + New Features

Adding buttons to layout

Scheduled Pinned Locked Moved Unsolved Qt for Python
3 Posts 2 Posters 816 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    afobeus
    wrote on last edited by
    #1

    Hi, I'm wondering why this code doesn't work. I expect all buttons to be placed in a row like this:51a42f03-95d1-4eae-a522-780099ce1dd0-image.png But I see only white window:672241e4-19e2-4035-aa71-d6f3338bf186-image.png . My code:

        def init_ui(self):
            self.setWindowTitle("Алфавитный указатель")
            self.setGeometry(100, 100, 1000, 700)
            self.buttons_layout = QHBoxLayout()
            self.buttons = [QPushButton(chr(index)) for index in range(ord('А'), ord('Я') + 1)]
            for button in self.buttons:
                # button.clicked.connect(lambda: self.filter_data(button.text()))
                self.buttons_layout.addWidget(button)
            self.setLayout(self.buttons_layout)
    

    My full code:

    import csv
    import random
    import sys
    
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtWidgets import QMainWindow, QTableWidget, QTableWidgetItem,\
        QLabel, QPushButton, QHBoxLayout
    from PyQt5.QtCore import QRect
    
    
    class MyWidget(QMainWindow):
        def __init__(self):
            super().__init__()
            self.init_ui()
            # self.loadTable()
    
        def init_ui(self):
            self.setWindowTitle("Алфавитный указатель")
            self.setGeometry(100, 100, 1000, 700)
            self.buttons_layout = QHBoxLayout()
            self.buttons = [QPushButton(chr(index)) for index in range(ord('А'), ord('Я') + 1)]
            for button in self.buttons:
                # button.clicked.connect(lambda: self.filter_data(button.text()))
                self.buttons_layout.addWidget(button)
            self.setLayout(self.buttons_layout)
            # self.result_label = QLabel(self)
            # self.result_label.setGeometry(10, 660, 200, 30)
            # self.table_widget = QTableWidget(self)
            # self.table_widget.setGeometry(10, 50, 980, 600)
    
        # def loadTable(self, data):
        #     self.table_widget.setColumnCount(5)
        #     self.table_widget.setHorizontalHeaderLabels(["ID", "Название", "Год", "Жанр",
        #                                                  "Продолжительность"])
        #     self.table_widget.setRowCount(0)
        #     for i, row in enumerate(data):
        #         self.table_widget.setRowCount(self.table_widget.rowCount() + 1)
        #         for j, elem in enumerate(row):
        #             self.table_widget.setItem(i, j, QTableWidgetItem(elem))
        #     self.table_widget.resizeColumnsToContents()
        #
        # def filter_data(self, letter):
        #     pass
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        ex = MyWidget()
        ex.show()
        sys.exit(app.exec())
    
    
    JonBJ 1 Reply Last reply
    0
    • A afobeus

      Hi, I'm wondering why this code doesn't work. I expect all buttons to be placed in a row like this:51a42f03-95d1-4eae-a522-780099ce1dd0-image.png But I see only white window:672241e4-19e2-4035-aa71-d6f3338bf186-image.png . My code:

          def init_ui(self):
              self.setWindowTitle("Алфавитный указатель")
              self.setGeometry(100, 100, 1000, 700)
              self.buttons_layout = QHBoxLayout()
              self.buttons = [QPushButton(chr(index)) for index in range(ord('А'), ord('Я') + 1)]
              for button in self.buttons:
                  # button.clicked.connect(lambda: self.filter_data(button.text()))
                  self.buttons_layout.addWidget(button)
              self.setLayout(self.buttons_layout)
      

      My full code:

      import csv
      import random
      import sys
      
      from PyQt5.QtWidgets import QApplication
      from PyQt5.QtWidgets import QMainWindow, QTableWidget, QTableWidgetItem,\
          QLabel, QPushButton, QHBoxLayout
      from PyQt5.QtCore import QRect
      
      
      class MyWidget(QMainWindow):
          def __init__(self):
              super().__init__()
              self.init_ui()
              # self.loadTable()
      
          def init_ui(self):
              self.setWindowTitle("Алфавитный указатель")
              self.setGeometry(100, 100, 1000, 700)
              self.buttons_layout = QHBoxLayout()
              self.buttons = [QPushButton(chr(index)) for index in range(ord('А'), ord('Я') + 1)]
              for button in self.buttons:
                  # button.clicked.connect(lambda: self.filter_data(button.text()))
                  self.buttons_layout.addWidget(button)
              self.setLayout(self.buttons_layout)
              # self.result_label = QLabel(self)
              # self.result_label.setGeometry(10, 660, 200, 30)
              # self.table_widget = QTableWidget(self)
              # self.table_widget.setGeometry(10, 50, 980, 600)
      
          # def loadTable(self, data):
          #     self.table_widget.setColumnCount(5)
          #     self.table_widget.setHorizontalHeaderLabels(["ID", "Название", "Год", "Жанр",
          #                                                  "Продолжительность"])
          #     self.table_widget.setRowCount(0)
          #     for i, row in enumerate(data):
          #         self.table_widget.setRowCount(self.table_widget.rowCount() + 1)
          #         for j, elem in enumerate(row):
          #             self.table_widget.setItem(i, j, QTableWidgetItem(elem))
          #     self.table_widget.resizeColumnsToContents()
          #
          # def filter_data(self, letter):
          #     pass
      
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          ex = MyWidget()
          ex.show()
          sys.exit(app.exec())
      
      
      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by JonB
      #2

      @afobeus
      QMainWindows have their own layout (see docs), you should not be doing self.setLayout(...). If you are intending to use a QMainWindow you might want to look at QMainWindow.setCentralWidget(), but I'm actually wondering if you just intend to use/derive from a plain QWidget?

      1 Reply Last reply
      2
      • A Offline
        A Offline
        afobeus
        wrote on last edited by
        #3

        Thanks a lot!

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved