PyQt работа с импортированными классами в QTabWidget

Рейтинг: 1Ответов: 1Опубликовано: 12.02.2023

Задача в работе с классами в PyQt. Работаю с PyQt5 и PyQt6.
Мне нужно внести в tab в файле Setup.py класс window из ssh.py.
Но проблема в том, что при импорте ssh.py он сразу открывается при запуске, без приложения, которое в Setup.py.

Setup.py

from PyQt6 import QtCore, QtGui, QtWidgets
from ssh import window


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(687, 388)
        self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtWidgets.QTabWidget(parent=self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 681, 371))
        self.tabWidget.setObjectName("tabWidget")
        # tab - ssh.py , в этом tab'e нужно выводит
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tabWidget.addTab(self.tab, "")

        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.widget = QtWidgets.QWidget(parent=self.tab_2)
        self.widget.setGeometry(QtCore.QRect(-1, 9, 681, 331))
        self.widget.setObjectName("widget")
        self.tabWidget.addTab(self.tab_2, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.tabWidget.addTab(self.tab_3, "")
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.tabWidget.addTab(self.tab_4, "")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 687, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "SSH - подключение"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "WebCamera"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "BackUp - резерв.коп"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "Settings"))


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())

ssh.py

from PyQt5.QtWebEngineWidgets import QWebEngineSettings

# это нужно вывести
class window(QtWidgets.QMainWindow):
   def __init__(self):
       QWebEngineSettings.globalSettings().setAttribute(QWebEngineSettings.PluginsEnabled, True)
       super(window, self).__init__()
       self.centralwid = QtWidgets.QWidget(self)
       self.vlayout = QtWidgets.QVBoxLayout()
       self.webview = QtWebEngineWidgets.QWebEngineView()
       self.webview.setUrl(QUrl("http://192.168.88.62:10000/"))
       self.vlayout.addWidget(self.webview)
       self.centralwid.setLayout(self.vlayout)
       self.setCentralWidget(self.centralwid)
       self.show()


app = QtWidgets.QApplication([])
ex = window()
sys.exit(app.exec_())

Вот так оно мне выводит при импорте ssh.py:

введите сюда описание изображения

Вот в этом tab'е должно быть окно из ssh.py, но его нет

введите сюда описание изображения

И ещё хотелось бы , чтобы работало на весь экран тоже. Заранее спасибо!

Ответы

▲ 0Принят

Спросите если что-то не понятно.

q1495596_setup.py

# -> vvvvv <------------------------------------------------------
from PyQt5 import QtCore, QtGui, QtWidgets
from q1495596_ssh import Window
# -> ^^^^^^^^^^^^ <----> ^^^^^^ <---------------------------------


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(687, 388)
        self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtWidgets.QTabWidget(parent=self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 681, 371))
        self.tabWidget.setObjectName("tabWidget")

        # tab - ssh.py , в этом tab'e нужно выводит
#        self.tab = QtWidgets.QWidget()
        self.tab = Window()                                         # !!! +++
        self.tab.setObjectName("tab")
        self.tabWidget.addTab(self.tab, "")

        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.widget = QtWidgets.QWidget(parent=self.tab_2)
        self.widget.setGeometry(QtCore.QRect(-1, 9, 681, 331))
        self.widget.setObjectName("widget")
        self.tabWidget.addTab(self.tab_2, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.tabWidget.addTab(self.tab_3, "")
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.tabWidget.addTab(self.tab_4, "")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 687, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "SSH - подключение"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "WebCamera"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "BackUp - резерв.коп"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "Settings"))


# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        self.tabWidget.setCurrentIndex(1)    # <---- установите какой вам надо


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec())
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

q1495596_ssh.py

# -> vvvvv <-----------------------------------------------------------
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWebEngineWidgets import QWebEngineSettings, QWebEngineView


class Window(QtWidgets.QMainWindow):
    def __init__(self):
        QWebEngineSettings.globalSettings().setAttribute(
            QWebEngineSettings.PluginsEnabled, True)
        super().__init__()
       
        self.centralwid = QtWidgets.QWidget(self)
        self.setCentralWidget(self.centralwid)

        self.webview = QWebEngineView()
        self.webview.setUrl(
            QtCore.QUrl("https://ru.stackoverflow.com/questions/1495596"))
            
        self.vlayout = QtWidgets.QVBoxLayout(self.centralwid)
        self.vlayout.addWidget(self.webview)

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
#        self.show()

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication([])
    ex = Window()
    ex.show()
    sys.exit(app.exec_())
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

введите сюда описание изображения

введите сюда описание изображения