Я пытаюсь получить данные выбранной переменной Qcombobox из onewindow.py в anotherWindow.py. я застрял, когда я использую механизм сигнала / слота.
у меня есть два файла mainWindow.py и connection.py , в mainWindow у меня есть поле со списком, где пользователь может выберите сервер, я хочу, когда пользователь выбирает сервер из выпадающего списка, тогда выбранный элемент (переменная) будет отправлен в connection.py
mainwindow.py:
from PyQt5 import QtCore, QtGui, QtWidgets
class ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(310, 230, 151, 22))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(310, 300, 281, 20))
self.label.setObjectName("label")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
# combobox selected
self.comboBox.activated[str].connect(self.onChanged)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.comboBox.setItemText(0, _translate("MainWindow", "TFUS3"))
self.comboBox.setItemText(1, _translate("MainWindow", "TFUSD"))
self.label.setText(_translate("MainWindow", "TextLabel"))
#-----------
def onChanged(self,text):
self.label.setText(text)
message=text
return message
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_())
и connection.py
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSqlQueryModel
from PyQt5.QtWidgets import QTableView, QApplication
import mainWindow
from mainWindow import *
class Example(QWidget):
def get_value(self,text):
message=text
print(message)
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbl = QLabel("select server from mainwindow is:",self )
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QComboBox')
self.show()
def onActivated(self, text):
createConnection(self,text)
self.lbl.adjustSize()
------server part----------------------------
USERNAME = 'XXXXXX'
PASSWORD = '000000'
def selectedServer(server):
switcher ={
'Server1': 'x.x.x.x,1433',
'Server2': 'x.x.x.x,1433',
}
return switcher.get(server,"Invalid Server ")
def createConnection(self,server):
SERVER= selectedServer(server)
global db
db = QSqlDatabase.addDatabase('QODBC')
db.setDatabaseName(f'Driver={{SQL SERVER}}; Server={SERVER}; UID={USERNAME}; PWD={PASSWORD}')
if db.open():
self.lbl.setText(f'{server} Server connected successfully')
print(f'{server} Server connected successfully')
else:
print('connection failed')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Я много раз пытался показать выбранный сервер в текстовой метке в окне подключения. Но не удалось. не знаю, где я ошибся.