pyqt5 открыть новое окно или новый файл из главного окна и передать параметры
Подскажите пожалуйста как реализовать. Есть главный файл main.py, в результате работы выводится список из компьютеров. Нажимая на кнопку Diag в tableWidget нужно открывать новый файл pos_diag.py (сделанный в Qt Desinger, потому-что в файл будет добавляться новый функционал, а руками мне будет сложно\долго все прописывать) и передавать в него параметры (ip, n, num) из main.py для подключения к отсканированным ПК и вывода информации.
Встал на том как передать параметры. А лучше всего еще и реализовать при нажатии на кнопку Diag создание новой вкладки в pos_diag.py чтобы работать с многими ПК в одном окне либо просто открывать каждый раз новую копию pos_diag.py.
Приложени(я)е будет скомпилировано в *.exe
Как вариант открывать скопилированный файл, но в него надо как-то передать аргуметы, и минус в том что таких файлов будет открыто много если работать без создания вкладок в pos_diag.py
def pos_log(self):
os.startfile(r'.\pos_diag.exe')
###main.py### главное окно
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class MyTab(QtWidgets.QWidget):
def __init__(self, parent=None):
super(MyTab, self).__init__()
self.parent = parent
self.rows = [
('10.16.26.25', 2),
('10.16.26.26', 3),
('10.16.26.27', 1),
('10.16.26.28', 4)
]
self.lineEdit = QtWidgets.QLineEdit(
placeholderText='Введите номер из 4х цифр')
self.lineEdit.returnPressed.connect(self.func_connect) #прикрутим Enter после ввода в lineedit
self.pushButton = QtWidgets.QPushButton('SCAN')
self.pushButton.clicked.connect(self.func_connect)
#Combobox
self.cmbState = QtWidgets.QComboBox(self)
self.cmbState.currentTextChanged.connect(self.WK_VNC)
self.tableWidget = QtWidgets.QTableWidget(0, 5)
self.tableWidget.setHorizontalHeaderLabels(
['IP', 'Num', 'SSH', 'VNC', 'Diag'])
self.tableWidget.horizontalHeader().setDefaultSectionSize(150)
self.tableWidget.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
vbox = QtWidgets.QVBoxLayout(self)
vbox.addWidget(self.tableWidget)
vbox.addWidget(self.lineEdit)
vbox.addWidget(self.pushButton)
vbox.addWidget(self.cmbState) #add combobox
def func_connect(self):
num = self.lineEdit.text() #текст нужно передать в pos_diag.py
#список для добавления в combobox
wk_list = [
['Выберите PC для подключения'],
['pc1', '10.20.35.25'],
['pc2', '10.20.35.26'],
['pc3', '10.20.35.27']
]
self.cmbState.clear()
for w in wk_list:
self.cmbState.addItem(* w)
if not num.isdigit():
self.parent.statusBar().showMessage(
'Достустимо вводить только цифры, номер состоит из 4х цифр')
return
if len(num) != 4 :
self.parent.statusBar().showMessage('Номер состоит из 4х цифр, повторите ввод.')
return
self.parent.statusBar().showMessage('')
self.tableWidget.setRowCount(len(self.rows))
for row, items in enumerate(self.rows):
self.tableWidget.setItem(row, 0, QtWidgets.QTableWidgetItem(items[0]))
self.tableWidget.setItem(row, 1, QtWidgets.QTableWidgetItem(str(items[1])))
button = QtWidgets.QPushButton(f'SSH {row}')
button.clicked.connect(lambda ch, ip=items[0], n=items[1], btn=button: \
self.button_pushed_SSH(ip, n, btn))
self.tableWidget.setCellWidget(row, 2, button)
button = QtWidgets.QPushButton(f'VNC {row}')
button.clicked.connect(lambda ch, ip=items[0], n=items[1], btn=button: \
self.button_pushed_VNC(ip, n, btn))
self.tableWidget.setCellWidget(row, 3, button)
button = QtWidgets.QPushButton(f'Diag {row}')
button.clicked.connect(lambda ch, ip=items[0], n=items[1], btn=button: \
self.button_pushed_VNC(ip, n, btn)) #текст нужно передать в pos_diag.py
self.tableWidget.setCellWidget(row, 4, button)
self.tableWidget.setSortingEnabled(True)
index = self.parent.tabWidget.currentIndex()
self.parent.tabWidget.setTabText(index, num)
def button_pushed_SSH(self, ip, n, btn):
print(f'{btn.text()}: ip={ip}, n={n}, lineEdit={self.lineEdit.text()}')
def button_pushed_VNC(self, ip, n, btn):
print(f'{btn.text()}: ip={ip}, n={n}, lineEdit={self.lineEdit.text()}')
def WK_VNC(self, txt):
currentData = self.cmbState.currentData()
if currentData:
print(f'данные для текущего элемента {txt} --> {currentData}')
class MyWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.centralwidget = QtWidgets.QWidget()
self.setCentralWidget(self.centralwidget)
self.tabWidget = QtWidgets.QTabWidget()
count = self.tabWidget.count()
self.nb = QtWidgets.QToolButton(text="Добавить", autoRaise=True)
self.nb.clicked.connect(self.new_tab)
self.tabWidget.insertTab(count, QtWidgets.QWidget(), "")
self.tabWidget.tabBar().setTabButton(
count, QtWidgets.QTabBar.RightSide, self.nb)
self.new_tab()
self.layout = QtWidgets.QGridLayout(self.centralwidget)
self.layout.addWidget(self.tabWidget)
self.tabWidget.setTabsClosable(True)
self.tabWidget.tabCloseRequested.connect(self.close_tab)
def new_tab(self):
index = self.tabWidget.count() - 0
tabPage = MyTab(self)
self.tabWidget.insertTab(index, tabPage, f"Tab {index}")
self.tabWidget.setCurrentIndex(index)
tabPage.lineEdit.setFocus()
def close_tab(self, index):
if self.tabWidget.count() > 2:
self.tabWidget.removeTab(index)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
app.setFont(QtGui.QFont("Ubuntu", 11, QtGui.QFont.Bold))
win = MyWindow()
win.resize(720, 480)
win.show()
sys.exit(app.exec_())
###pos_diag.py### второе окно открывающееся при нажатии кнопки Diag
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QFile, QTextStream
import diag2
import paramiko
class MyWindow(QtWidgets.QMainWindow, diag2.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowTitle("Diag")
btn_press = "QPushButton:pressed{background-color: rgb(43, 153, 131)}"
self.SMART_HDD.clicked.connect(lambda: self.CMD('10.20.20.5', 'ls -la /')) #вместо IP адреса нужно передать ip из main.py
self.SMART_HDD.setStyleSheet(btn_press)
self.POSinfo.clicked.connect(lambda: self.CMD('10.20.20.5', 'sudo dmidecode -t1'))
#вместо IP адреса нужно передать ip из main.py
self.POSinfo.setStyleSheet(btn_press)
#функция для подключения событий кнопкам
def CMD(self, ip, command):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip, username='login', password='passwd', timeout=2)
stdin, stdout, stderr = ssh.exec_command(command)
data = stdout.read().decode('utf-8') + stderr.read().decode('utf-8')
print(data)
self.textBrowser.setText(data)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
app.setFont(QtGui.QFont("Ubuntu", 10, QtGui.QFont.Bold))
win = MyWindow()
win.resize(800, 550)
win.show()
sys.exit(app.exec_())
#import diag2 скомпилирован из QtDesinger
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(752, 532)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.tabWidget.setGeometry(QtCore.QRect(0, 0, 801, 581))
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.tabWidget_2 = QtWidgets.QTabWidget(self.tab)
self.tabWidget_2.setGeometry(QtCore.QRect(0, 0, 749, 487))
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.tabWidget_2.setFont(font)
self.tabWidget_2.setAutoFillBackground(False)
self.tabWidget_2.setObjectName("tabWidget_2")
self.posdiag = QtWidgets.QWidget()
self.posdiag.setObjectName("posdiag")
self.textBrowser = QtWidgets.QTextBrowser(self.posdiag)
self.textBrowser.setEnabled(True)
self.textBrowser.setGeometry(QtCore.QRect(97, 0, 651, 461))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.textBrowser.sizePolicy().hasHeightForWidth())
self.textBrowser.setSizePolicy(sizePolicy)
self.textBrowser.viewport().setProperty("cursor", QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.textBrowser.setObjectName("textBrowser")
self.layoutWidget = QtWidgets.QWidget(self.posdiag)
self.layoutWidget.setGeometry(QtCore.QRect(0, 0, 91, 429))
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.POSinfo = QtWidgets.QPushButton(self.layoutWidget)
self.POSinfo.setObjectName("POSinfo")
self.verticalLayout.addWidget(self.POSinfo)
self.X11VNC = QtWidgets.QPushButton(self.layoutWidget)
self.X11VNC.setObjectName("X11VNC")
self.verticalLayout.addWidget(self.X11VNC)
self.SMART_HDD = QtWidgets.QPushButton(self.layoutWidget)
self.SMART_HDD.setObjectName("SMART_HDD")
self.verticalLayout.addWidget(self.SMART_HDD)
self.frinfo = QtWidgets.QPushButton(self.layoutWidget)
self.frinfo.setObjectName("frinfo")
self.verticalLayout.addWidget(self.frinfo)
self.Network = QtWidgets.QPushButton(self.layoutWidget)
self.Network.setObjectName("Network")
self.verticalLayout.addWidget(self.Network)
self.update = QtWidgets.QPushButton(self.layoutWidget)
self.update.setObjectName("update")
self.verticalLayout.addWidget(self.update)
self.error = QtWidgets.QPushButton(self.layoutWidget)
self.error.setObjectName("error")
self.verticalLayout.addWidget(self.error)
self.error_scale = QtWidgets.QPushButton(self.layoutWidget)
self.error_scale.setObjectName("error_scale")
self.verticalLayout.addWidget(self.error_scale)
self.error_fr = QtWidgets.QPushButton(self.layoutWidget)
self.error_fr.setObjectName("error_fr")
self.verticalLayout.addWidget(self.error_fr)
self.syslog = QtWidgets.QPushButton(self.layoutWidget)
self.syslog.setObjectName("syslog")
self.verticalLayout.addWidget(self.syslog)
self.lsusb = QtWidgets.QPushButton(self.layoutWidget)
self.lsusb.setObjectName("lsusb")
self.verticalLayout.addWidget(self.lsusb)
self.date_install = QtWidgets.QPushButton(self.layoutWidget)
self.date_install.setObjectName("date_install")
self.verticalLayout.addWidget(self.date_install)
self.cash_reload = QtWidgets.QPushButton(self.layoutWidget)
self.cash_reload.setObjectName("cash_reload")
self.verticalLayout.addWidget(self.cash_reload)
self.pos_reboot = QtWidgets.QPushButton(self.layoutWidget)
self.pos_reboot.setObjectName("pos_reboot")
self.verticalLayout.addWidget(self.pos_reboot)
self.tabWidget_2.addTab(self.posdiag, "")
self.NetScan = QtWidgets.QWidget()
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.NetScan.sizePolicy().hasHeightForWidth())
self.NetScan.setSizePolicy(sizePolicy)
self.NetScan.setObjectName("NetScan")
self.verticalLayoutWidget = QtWidgets.QWidget(self.NetScan)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 91, 411))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.pushButton_2 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_2.setObjectName("pushButton_2")
self.verticalLayout_2.addWidget(self.pushButton_2)
self.pushButton_4 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_4.setObjectName("pushButton_4")
self.verticalLayout_2.addWidget(self.pushButton_4)
self.pushButton_6 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_6.setObjectName("pushButton_6")
self.verticalLayout_2.addWidget(self.pushButton_6)
self.pushButton_8 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_8.setObjectName("pushButton_8")
self.verticalLayout_2.addWidget(self.pushButton_8)
self.pushButton_7 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_7.setObjectName("pushButton_7")
self.verticalLayout_2.addWidget(self.pushButton_7)
self.pushButton_5 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_5.setObjectName("pushButton_5")
self.verticalLayout_2.addWidget(self.pushButton_5)
self.pushButton_3 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_3.setObjectName("pushButton_3")
self.verticalLayout_2.addWidget(self.pushButton_3)
self.pushButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton.setObjectName("pushButton")
self.verticalLayout_2.addWidget(self.pushButton)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_2.addItem(spacerItem)
self.textBrowser_2 = QtWidgets.QTextBrowser(self.NetScan)
self.textBrowser_2.setGeometry(QtCore.QRect(97, 0, 626, 411))
self.textBrowser_2.setObjectName("textBrowser_2")
self.tabWidget_2.addTab(self.NetScan, "")
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.tabWidget.addTab(self.tab_2, "")
self.tab_3 = QtWidgets.QWidget()
self.tab_3.setObjectName("tab_3")
self.tabWidget.addTab(self.tab_3, "")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(0)
self.tabWidget_2.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.POSinfo.setText(_translate("MainWindow", "POS info"))
self.X11VNC.setText(_translate("MainWindow", "X11VNC"))
self.SMART_HDD.setText(_translate("MainWindow", "Smart HDD"))
self.frinfo.setText(_translate("MainWindow", "FR info"))
self.Network.setText(_translate("MainWindow", "Network"))
self.update.setText(_translate("MainWindow", "Update"))
self.error.setText(_translate("MainWindow", "Error"))
self.error_scale.setText(_translate("MainWindow", "Error Scale"))
self.error_fr.setText(_translate("MainWindow", "Error FR"))
self.syslog.setText(_translate("MainWindow", "Sysylog"))
self.lsusb.setText(_translate("MainWindow", "lsusb"))
self.date_install.setText(_translate("MainWindow", "Date install"))
self.cash_reload.setText(_translate("MainWindow", "Cash reload"))
self.pos_reboot.setText(_translate("MainWindow", "POS reboot"))
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.posdiag), _translate("MainWindow", " POS Diag "))
self.pushButton_2.setText(_translate("MainWindow", "PushButton"))
self.pushButton_4.setText(_translate("MainWindow", "PushButton"))
self.pushButton_6.setText(_translate("MainWindow", "PushButton"))
self.pushButton_8.setText(_translate("MainWindow", "PushButton"))
self.pushButton_7.setText(_translate("MainWindow", "PushButton"))
self.pushButton_5.setText(_translate("MainWindow", "PushButton"))
self.pushButton_3.setText(_translate("MainWindow", "PushButton"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.NetScan), _translate("MainWindow", " NetScan "))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "POS-1"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "POS-2"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "POS-3"))
Ответы (1 шт):
Не уверен что правильно вас понял, но предложу попробовать:
main.py
###main.py### главное окно
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from q1314624_pos_diag import MyWindow as PosDiag # +++ PosDiag
class MyTab(QtWidgets.QWidget):
def __init__(self, parent=None):
super(MyTab, self).__init__()
self.parent = parent
self.rows = [
('10.16.26.25', 2),
('10.16.26.26', 3),
('10.16.26.27', 1),
('10.16.26.28', 4)
]
self.lineEdit = QtWidgets.QLineEdit(
placeholderText='Введите номер из 4х цифр')
self.lineEdit.returnPressed.connect(self.func_connect) #прикрутим Enter после ввода в lineedit
self.pushButton = QtWidgets.QPushButton('SCAN')
self.pushButton.clicked.connect(self.func_connect)
#Combobox
self.cmbState = QtWidgets.QComboBox(self)
self.cmbState.currentTextChanged.connect(self.WK_VNC)
self.tableWidget = QtWidgets.QTableWidget(0, 5)
self.tableWidget.setHorizontalHeaderLabels(
['IP', 'Num', 'SSH', 'VNC', 'Diag'])
self.tableWidget.horizontalHeader().setDefaultSectionSize(150)
self.tableWidget.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
vbox = QtWidgets.QVBoxLayout(self)
vbox.addWidget(self.tableWidget)
vbox.addWidget(self.lineEdit)
vbox.addWidget(self.pushButton)
vbox.addWidget(self.cmbState) #add combobox
def func_connect(self):
num = self.lineEdit.text() #текст нужно передать в pos_diag.py
#список для добавления в combobox
wk_list = [
['Выберите PC для подключения'],
['pc1', '10.20.35.25'],
['pc2', '10.20.35.26'],
['pc3', '10.20.35.27']
]
self.cmbState.clear()
for w in wk_list:
self.cmbState.addItem(* w)
if not num.isdigit():
self.parent.statusBar().showMessage(
'Достустимо вводить только цифры, номер состоит из 4х цифр')
return
if len(num) != 4 :
self.parent.statusBar().showMessage('Номер состоит из 4х цифр, повторите ввод.')
return
self.parent.statusBar().showMessage('')
self.tableWidget.setRowCount(len(self.rows))
for row, items in enumerate(self.rows):
self.tableWidget.setItem(row, 0, QtWidgets.QTableWidgetItem(items[0]))
self.tableWidget.setItem(row, 1, QtWidgets.QTableWidgetItem(str(items[1])))
button = QtWidgets.QPushButton(f'SSH {row}')
button.clicked.connect(lambda ch, ip=items[0], n=items[1], btn=button: \
self.button_pushed_SSH(ip, n, btn))
self.tableWidget.setCellWidget(row, 2, button)
button = QtWidgets.QPushButton(f'VNC {row}')
button.clicked.connect(lambda ch, ip=items[0], n=items[1], btn=button: \
self.button_pushed_VNC(ip, n, btn))
self.tableWidget.setCellWidget(row, 3, button)
button = QtWidgets.QPushButton(f'Diag {row}')
button.clicked.connect(lambda ch, ip=items[0], n=items[1], btn=button: \
self.button_pushed_VNC(ip, n, btn))
#текст нужно передать в pos_diag.py
self.tableWidget.setCellWidget(row, 4, button)
self.tableWidget.setSortingEnabled(True)
index = self.parent.tabWidget.currentIndex()
self.parent.tabWidget.setTabText(index, num)
def button_pushed_SSH(self, ip, n, btn):
print(f'{btn.text()}: ip={ip}, n={n}, lineEdit={self.lineEdit.text()}')
def button_pushed_VNC(self, ip, n, btn):
print(f'{btn.text()}: ip={ip}, n={n}, lineEdit={self.lineEdit.text()}')
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
if btn.text()[0:4] == 'Diag':
print(f'---------------- {ip}') #
self.posDiag = PosDiag(ip)
self.posDiag.show()
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
def WK_VNC(self, txt):
currentData = self.cmbState.currentData()
if currentData:
print(f'данные для текущего элемента {txt} --> {currentData}')
class MyWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.centralwidget = QtWidgets.QWidget()
self.setCentralWidget(self.centralwidget)
self.tabWidget = QtWidgets.QTabWidget()
count = self.tabWidget.count()
self.nb = QtWidgets.QToolButton(text="Добавить", autoRaise=True)
self.nb.clicked.connect(self.new_tab)
self.tabWidget.insertTab(count, QtWidgets.QWidget(), "")
self.tabWidget.tabBar().setTabButton(
count, QtWidgets.QTabBar.RightSide, self.nb)
self.new_tab()
self.layout = QtWidgets.QGridLayout(self.centralwidget)
self.layout.addWidget(self.tabWidget)
self.tabWidget.setTabsClosable(True)
self.tabWidget.tabCloseRequested.connect(self.close_tab)
def new_tab(self):
index = self.tabWidget.count() - 0
tabPage = MyTab(self)
self.tabWidget.insertTab(index, tabPage, f"Tab {index}")
self.tabWidget.setCurrentIndex(index)
tabPage.lineEdit.setFocus()
def close_tab(self, index):
if self.tabWidget.count() > 2:
self.tabWidget.removeTab(index)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
app.setFont(QtGui.QFont("Ubuntu", 11, QtGui.QFont.Bold))
win = MyWindow()
win.resize(720, 480)
win.show()
sys.exit(app.exec_())
q1314624_pos_diag.py
###pos_diag.py### второе окно открывающееся при нажатии кнопки Diag
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QFile, QTextStream
#import paramiko # это раскомментируете
#from diag2 import Ui_MainWindow
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(752, 532)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.tabWidget.setGeometry(QtCore.QRect(0, 0, 801, 581))
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.tabWidget_2 = QtWidgets.QTabWidget(self.tab)
self.tabWidget_2.setGeometry(QtCore.QRect(0, 0, 749, 487))
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.tabWidget_2.setFont(font)
self.tabWidget_2.setAutoFillBackground(False)
self.tabWidget_2.setObjectName("tabWidget_2")
self.posdiag = QtWidgets.QWidget()
self.posdiag.setObjectName("posdiag")
self.textBrowser = QtWidgets.QTextBrowser(self.posdiag)
self.textBrowser.setEnabled(True)
self.textBrowser.setGeometry(QtCore.QRect(97, 0, 651, 461))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.textBrowser.sizePolicy().hasHeightForWidth())
self.textBrowser.setSizePolicy(sizePolicy)
self.textBrowser.viewport().setProperty("cursor", QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.textBrowser.setObjectName("textBrowser")
self.layoutWidget = QtWidgets.QWidget(self.posdiag)
self.layoutWidget.setGeometry(QtCore.QRect(0, 0, 91, 429))
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.POSinfo = QtWidgets.QPushButton(self.layoutWidget)
self.POSinfo.setObjectName("POSinfo")
self.verticalLayout.addWidget(self.POSinfo)
self.X11VNC = QtWidgets.QPushButton(self.layoutWidget)
self.X11VNC.setObjectName("X11VNC")
self.verticalLayout.addWidget(self.X11VNC)
self.SMART_HDD = QtWidgets.QPushButton(self.layoutWidget)
self.SMART_HDD.setObjectName("SMART_HDD")
self.verticalLayout.addWidget(self.SMART_HDD)
self.frinfo = QtWidgets.QPushButton(self.layoutWidget)
self.frinfo.setObjectName("frinfo")
self.verticalLayout.addWidget(self.frinfo)
self.Network = QtWidgets.QPushButton(self.layoutWidget)
self.Network.setObjectName("Network")
self.verticalLayout.addWidget(self.Network)
self.update = QtWidgets.QPushButton(self.layoutWidget)
self.update.setObjectName("update")
self.verticalLayout.addWidget(self.update)
self.error = QtWidgets.QPushButton(self.layoutWidget)
self.error.setObjectName("error")
self.verticalLayout.addWidget(self.error)
self.error_scale = QtWidgets.QPushButton(self.layoutWidget)
self.error_scale.setObjectName("error_scale")
self.verticalLayout.addWidget(self.error_scale)
self.error_fr = QtWidgets.QPushButton(self.layoutWidget)
self.error_fr.setObjectName("error_fr")
self.verticalLayout.addWidget(self.error_fr)
self.syslog = QtWidgets.QPushButton(self.layoutWidget)
self.syslog.setObjectName("syslog")
self.verticalLayout.addWidget(self.syslog)
self.lsusb = QtWidgets.QPushButton(self.layoutWidget)
self.lsusb.setObjectName("lsusb")
self.verticalLayout.addWidget(self.lsusb)
self.date_install = QtWidgets.QPushButton(self.layoutWidget)
self.date_install.setObjectName("date_install")
self.verticalLayout.addWidget(self.date_install)
self.cash_reload = QtWidgets.QPushButton(self.layoutWidget)
self.cash_reload.setObjectName("cash_reload")
self.verticalLayout.addWidget(self.cash_reload)
self.pos_reboot = QtWidgets.QPushButton(self.layoutWidget)
self.pos_reboot.setObjectName("pos_reboot")
self.verticalLayout.addWidget(self.pos_reboot)
self.tabWidget_2.addTab(self.posdiag, "")
self.NetScan = QtWidgets.QWidget()
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.NetScan.sizePolicy().hasHeightForWidth())
self.NetScan.setSizePolicy(sizePolicy)
self.NetScan.setObjectName("NetScan")
self.verticalLayoutWidget = QtWidgets.QWidget(self.NetScan)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 91, 411))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.pushButton_2 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_2.setObjectName("pushButton_2")
self.verticalLayout_2.addWidget(self.pushButton_2)
self.pushButton_4 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_4.setObjectName("pushButton_4")
self.verticalLayout_2.addWidget(self.pushButton_4)
self.pushButton_6 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_6.setObjectName("pushButton_6")
self.verticalLayout_2.addWidget(self.pushButton_6)
self.pushButton_8 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_8.setObjectName("pushButton_8")
self.verticalLayout_2.addWidget(self.pushButton_8)
self.pushButton_7 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_7.setObjectName("pushButton_7")
self.verticalLayout_2.addWidget(self.pushButton_7)
self.pushButton_5 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_5.setObjectName("pushButton_5")
self.verticalLayout_2.addWidget(self.pushButton_5)
self.pushButton_3 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_3.setObjectName("pushButton_3")
self.verticalLayout_2.addWidget(self.pushButton_3)
self.pushButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton.setObjectName("pushButton")
self.verticalLayout_2.addWidget(self.pushButton)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_2.addItem(spacerItem)
self.textBrowser_2 = QtWidgets.QTextBrowser(self.NetScan)
self.textBrowser_2.setGeometry(QtCore.QRect(97, 0, 626, 411))
self.textBrowser_2.setObjectName("textBrowser_2")
self.tabWidget_2.addTab(self.NetScan, "")
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.tabWidget.addTab(self.tab_2, "")
self.tab_3 = QtWidgets.QWidget()
self.tab_3.setObjectName("tab_3")
self.tabWidget.addTab(self.tab_3, "")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(0)
self.tabWidget_2.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.POSinfo.setText(_translate("MainWindow", "POS info"))
self.X11VNC.setText(_translate("MainWindow", "X11VNC"))
self.SMART_HDD.setText(_translate("MainWindow", "Smart HDD"))
self.frinfo.setText(_translate("MainWindow", "FR info"))
self.Network.setText(_translate("MainWindow", "Network"))
self.update.setText(_translate("MainWindow", "Update"))
self.error.setText(_translate("MainWindow", "Error"))
self.error_scale.setText(_translate("MainWindow", "Error Scale"))
self.error_fr.setText(_translate("MainWindow", "Error FR"))
self.syslog.setText(_translate("MainWindow", "Sysylog"))
self.lsusb.setText(_translate("MainWindow", "lsusb"))
self.date_install.setText(_translate("MainWindow", "Date install"))
self.cash_reload.setText(_translate("MainWindow", "Cash reload"))
self.pos_reboot.setText(_translate("MainWindow", "POS reboot"))
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.posdiag), _translate("MainWindow", " POS Diag "))
self.pushButton_2.setText(_translate("MainWindow", "PushButton"))
self.pushButton_4.setText(_translate("MainWindow", "PushButton"))
self.pushButton_6.setText(_translate("MainWindow", "PushButton"))
self.pushButton_8.setText(_translate("MainWindow", "PushButton"))
self.pushButton_7.setText(_translate("MainWindow", "PushButton"))
self.pushButton_5.setText(_translate("MainWindow", "PushButton"))
self.pushButton_3.setText(_translate("MainWindow", "PushButton"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.NetScan), _translate("MainWindow", " NetScan "))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "POS-1"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "POS-2"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "POS-3"))
class MyWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, ip):
super().__init__()
print(f'================ {ip}') #
self.setupUi(self)
self.setWindowTitle("Diag")
btn_press = "QPushButton:pressed{background-color: rgb(43, 153, 131)}"
self.SMART_HDD.clicked.connect(
# вместо IP адреса нужно передать ip из main.py
# lambda: self.CMD('10.20.20.5', 'ls -la /'))
lambda: self.CMD(ip, 'ls -la /'))
self.SMART_HDD.setStyleSheet(btn_press)
self.POSinfo.clicked.connect(
# вместо IP адреса нужно передать ip из main.py
# lambda: self.CMD('10.20.20.5', 'sudo dmidecode -t1'))
lambda: self.CMD(ip, 'sudo dmidecode -t1'))
self.POSinfo.setStyleSheet(btn_press)
#функция для подключения событий кнопкам
def CMD(self, ip, command):
''' это раскомментируете
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip, username='login', password='passwd', timeout=2)
stdin, stdout, stderr = ssh.exec_command(command)
data = stdout.read().decode('utf-8') + stderr.read().decode('utf-8')
print(data)
'''
data = f'ip = {ip}, command = {command}' # это для теста, уберете
self.textBrowser.setText(data)
