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. Acces to qlineedit from another class
Qt 6.11 is out! See what's new in the release blog

Acces to qlineedit from another class

Scheduled Pinned Locked Moved Solved Qt for Python
5 Posts 2 Posters 2.1k 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
    AnasHanlab
    wrote on last edited by
    #1

    I am new in Python/Qt designer, I am trying to create an application with Qt Designer. I added a application with 2 tab, the first one I create a button to add a text in the second tab. You can see in the second tab it's a simple lineedit (where the text will displayed). When I click in the button, slot signal is activated but nothing changed in the second tab. I don't know how can I get the index of the tab and use it when I need to change the settext of the lineedit in the second tab.

    
    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file 'EXample_simple_Tab_Main.ui'
    #
    # Created by: PyQt5 UI code generator 5.9.2
    #
    # WARNING! All changes made in this file will be lost!
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtCore import QObject, pyqtSlot                                        
    
    class Populate_Tab(QtWidgets.QWidget):
    
        def Populate_BCU_Info(obj):
            # print("final self",type(self))
            Value ="10.22"
    
            obj.Tab_Ip_Adress_2.setText(Value)
    
            print("resultat",obj.Tab_Ip_Adress_2.text())
    
    
    class TabPage(QtWidgets.QWidget):
        def __init__(self, parent):
            super().__init__()
                              
            self.tab_2 = QtWidgets.QWidget()
            self.tab_2.setObjectName("tab_2")
            self.Tab_Ip_Adress_2 = QtWidgets.QLineEdit(self)
            self.Tab_Ip_Adress_2.setGeometry(QtCore.QRect(130, 110, 120, 20))
            self.Tab_Ip_Adress_2.setStyleSheet("background-color: rgb(169, 255, 8);\n"
    "")
            self.Tab_Ip_Adress_2.setReadOnly(False)
            self.Tab_Ip_Adress_2.setObjectName("Tab_Ip_Adress_2")
            self.Tab_Ip_Adress_2.setText("test from tab")
    
    
    
    class Ui_MainWindow(QtWidgets.QWidget):
        def __init__(self):
            super().__init__()
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(1179, 945)
            MainWindow.setStyleSheet("background-color: rgb(255, 255, 255);")
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
            self.verticalLayout_3.setObjectName("verticalLayout_3")
            self.verticalLayout = QtWidgets.QVBoxLayout()
            self.verticalLayout.setObjectName("verticalLayout")
            self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
            self.tabWidget.setTabsClosable(True)
            self.tabWidget.setObjectName("tabWidget")
            self.tab = QtWidgets.QWidget()
            self.tab.setObjectName("tab")
            self.gridLayout = QtWidgets.QGridLayout(self.tab)
            self.gridLayout.setObjectName("gridLayout")
            self.pushButton = QtWidgets.QPushButton(self.tab)
            self.pushButton.setObjectName("pushButton")
            self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
    
            self.tabWidget.addTab(self.tab, "")
                                      
            self.verticalLayout.addWidget(self.tabWidget)
            self.verticalLayout_3.addLayout(self.verticalLayout)
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 1179, 21))
            self.menubar.setObjectName("menubar")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
            self.tabWidget.setCurrentIndex(0)
            # self.tabWidget.tabCloseRequested['int'].connect(MainWindow.CloseTab)
            self.pushButton.clicked.connect(lambda x:self.CreatNewTab())
            # self.pushButton_New.clicked.connect(lambda x:self.CreatNewTab2())
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
            self.pushButton.setText(_translate("MainWindow", "PushButton"))
            # self.pushButton_New.setText(_translate("MainWindow", "New_test"))
            self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Main"))
                                                                                                           
        @pyqtSlot( )
        def CreatNewTab( self ):
            """create a tab from the list of the BCUs"""
            List_of_BCUs = ["10.22.91.103"]
            # print(List_of_BCUs)
            for i in range (len(List_of_BCUs)):
                if List_of_BCUs[i] != '':
                    text = List_of_BCUs[i]
                    # print(type(self))
                    # TabPage(self)
                    index_tab = self.tabWidget.addTab(TabPage(self), text ) 
    
                    # Populate_Tab(TabPage(self))
                    # Testons = Populate_Tab.Populate_BCU_Info(TabPage(self))
                    # print(index_tab)
                    Populate_Tab.Populate_BCU_Info(TabPage(self))
            pass  
    
                                
    
    
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
    
        # ui.setupUi(MainWindow)
    
        MainWindow.show()
        sys.exit(app.exec_())
    

    I think that the call function is correct, I can have acces to "Tab_Ip_Adress_2" qlinewidget, and settext is working fine but it's not displayed in the window I don't why, please any help :)

    jsulmJ 1 Reply Last reply
    0
    • A AnasHanlab

      I am new in Python/Qt designer, I am trying to create an application with Qt Designer. I added a application with 2 tab, the first one I create a button to add a text in the second tab. You can see in the second tab it's a simple lineedit (where the text will displayed). When I click in the button, slot signal is activated but nothing changed in the second tab. I don't know how can I get the index of the tab and use it when I need to change the settext of the lineedit in the second tab.

      
      # -*- coding: utf-8 -*-
      
      # Form implementation generated from reading ui file 'EXample_simple_Tab_Main.ui'
      #
      # Created by: PyQt5 UI code generator 5.9.2
      #
      # WARNING! All changes made in this file will be lost!
      
      from PyQt5 import QtCore, QtGui, QtWidgets
      from PyQt5.QtCore import QObject, pyqtSlot                                        
      
      class Populate_Tab(QtWidgets.QWidget):
      
          def Populate_BCU_Info(obj):
              # print("final self",type(self))
              Value ="10.22"
      
              obj.Tab_Ip_Adress_2.setText(Value)
      
              print("resultat",obj.Tab_Ip_Adress_2.text())
      
      
      class TabPage(QtWidgets.QWidget):
          def __init__(self, parent):
              super().__init__()
                                
              self.tab_2 = QtWidgets.QWidget()
              self.tab_2.setObjectName("tab_2")
              self.Tab_Ip_Adress_2 = QtWidgets.QLineEdit(self)
              self.Tab_Ip_Adress_2.setGeometry(QtCore.QRect(130, 110, 120, 20))
              self.Tab_Ip_Adress_2.setStyleSheet("background-color: rgb(169, 255, 8);\n"
      "")
              self.Tab_Ip_Adress_2.setReadOnly(False)
              self.Tab_Ip_Adress_2.setObjectName("Tab_Ip_Adress_2")
              self.Tab_Ip_Adress_2.setText("test from tab")
      
      
      
      class Ui_MainWindow(QtWidgets.QWidget):
          def __init__(self):
              super().__init__()
              MainWindow.setObjectName("MainWindow")
              MainWindow.resize(1179, 945)
              MainWindow.setStyleSheet("background-color: rgb(255, 255, 255);")
              self.centralwidget = QtWidgets.QWidget(MainWindow)
              self.centralwidget.setObjectName("centralwidget")
              self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
              self.verticalLayout_3.setObjectName("verticalLayout_3")
              self.verticalLayout = QtWidgets.QVBoxLayout()
              self.verticalLayout.setObjectName("verticalLayout")
              self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
              self.tabWidget.setTabsClosable(True)
              self.tabWidget.setObjectName("tabWidget")
              self.tab = QtWidgets.QWidget()
              self.tab.setObjectName("tab")
              self.gridLayout = QtWidgets.QGridLayout(self.tab)
              self.gridLayout.setObjectName("gridLayout")
              self.pushButton = QtWidgets.QPushButton(self.tab)
              self.pushButton.setObjectName("pushButton")
              self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
      
              self.tabWidget.addTab(self.tab, "")
                                        
              self.verticalLayout.addWidget(self.tabWidget)
              self.verticalLayout_3.addLayout(self.verticalLayout)
              MainWindow.setCentralWidget(self.centralwidget)
              self.menubar = QtWidgets.QMenuBar(MainWindow)
              self.menubar.setGeometry(QtCore.QRect(0, 0, 1179, 21))
              self.menubar.setObjectName("menubar")
              MainWindow.setMenuBar(self.menubar)
              self.statusbar = QtWidgets.QStatusBar(MainWindow)
              self.statusbar.setObjectName("statusbar")
              MainWindow.setStatusBar(self.statusbar)
      
              self.retranslateUi(MainWindow)
              self.tabWidget.setCurrentIndex(0)
              # self.tabWidget.tabCloseRequested['int'].connect(MainWindow.CloseTab)
              self.pushButton.clicked.connect(lambda x:self.CreatNewTab())
              # self.pushButton_New.clicked.connect(lambda x:self.CreatNewTab2())
              QtCore.QMetaObject.connectSlotsByName(MainWindow)
      
          def retranslateUi(self, MainWindow):
              _translate = QtCore.QCoreApplication.translate
              MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
              self.pushButton.setText(_translate("MainWindow", "PushButton"))
              # self.pushButton_New.setText(_translate("MainWindow", "New_test"))
              self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Main"))
                                                                                                             
          @pyqtSlot( )
          def CreatNewTab( self ):
              """create a tab from the list of the BCUs"""
              List_of_BCUs = ["10.22.91.103"]
              # print(List_of_BCUs)
              for i in range (len(List_of_BCUs)):
                  if List_of_BCUs[i] != '':
                      text = List_of_BCUs[i]
                      # print(type(self))
                      # TabPage(self)
                      index_tab = self.tabWidget.addTab(TabPage(self), text ) 
      
                      # Populate_Tab(TabPage(self))
                      # Testons = Populate_Tab.Populate_BCU_Info(TabPage(self))
                      # print(index_tab)
                      Populate_Tab.Populate_BCU_Info(TabPage(self))
              pass  
      
                                  
      
      
      
      if __name__ == "__main__":
          import sys
          app = QtWidgets.QApplication(sys.argv)
          MainWindow = QtWidgets.QMainWindow()
          ui = Ui_MainWindow()
      
          # ui.setupUi(MainWindow)
      
          MainWindow.show()
          sys.exit(app.exec_())
      

      I think that the call function is correct, I can have acces to "Tab_Ip_Adress_2" qlinewidget, and settext is working fine but it's not displayed in the window I don't why, please any help :)

      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @AnasHanlab said in Acces to qlineedit from another class:

      index_tab = self.tabWidget.addTab(TabPage(self), text )

      Populate_Tab.Populate_BCU_Info(TabPage(self))

      You are creating two different TabPage instances here and change the text on the second one.

      https://forum.qt.io/topic/113070/qt-code-of-conduct

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

        @jsulm ,
        thank you for the reactivity.
        the first line index_tab = self.tabWidget.addTab(TabPage(self), text ), is to create a new tab from the main with the slot.
        and the second one is to populate this new tab page.
        How can I populate the tab created before ?

        jsulmJ 1 Reply Last reply
        0
        • A AnasHanlab

          @jsulm ,
          thank you for the reactivity.
          the first line index_tab = self.tabWidget.addTab(TabPage(self), text ), is to create a new tab from the main with the slot.
          and the second one is to populate this new tab page.
          How can I populate the tab created before ?

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @AnasHanlab said in Acces to qlineedit from another class:

          and the second one is to populate this new tab page.

          But you are NOT populating the one you created, you are populating a new one!
          Why not simply:

          tabPage = TabPage(self)
          index_tab = self.tabWidget.addTab(tabPage, text )
          Populate_Tab.Populate_BCU_Info(tabPage)
          

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          2
          • A Offline
            A Offline
            AnasHanlab
            wrote on last edited by
            #5

            oh magic, I had a doubt about it I didn't have any way to check it.
            Thank you so much you resolved my issue :)

            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