PyQt работа с импортированными классами в QTabWidget
Задача в работе с классами в 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, но его нет
И ещё хотелось бы , чтобы работало на весь экран тоже. Заранее спасибо!
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Спросите если что-то не понятно.
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_())
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^



