Задать вопрос
Nicelogin
@Nicelogin
Привет!

Как вызвать функцию?

Помогите пожалуйста вызвать функцию. Я не понимаю как это правильно сделать. Мне нужно вызвать функцию update_lb_cab внутри функции другого класса чтобы обновить данные в интерфейсе. Перепробовал разные варианты, но они не работают. Вызвать нужно в месте где комментарий - # Вызвать update_lb_cab здесь !

import sys
from PySide6 import QtWidgets
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog
from main_ui import Ui_MainWindow
from settings_ui import Ui_Dialog
from conn import Data

class queue(QMainWindow):
	def __init__(self, parent=None):
		super().__init__(parent)
		self.ui = Ui_MainWindow()
		self.ui.setupUi(self)
		self.conn = Data()

		#Принимаем параметр (medecins_id). По умолчанию без параметра передается medecins_id администратора
		if __name__ == "__main__":
			if len (sys.argv) > 1:
				global medecins_id
				medecins_id = format (sys.argv[1])
				medecins_fio = Data.get_fio_medecins(self, medecins_id)
			else:
				medecins_id = 1
				medecins_fio = "Системный администратор"
				print("Параметр - системный администратор")

			# Вывод ФИО врача, запустившего программу	
			self.ui.lb_vrach.setText("Врач: " + medecins_fio)		

			def update_lb_cab(self):
				# Вызов функции для показа номера кабинета в верху программы. Второй аргумент в функции get_cabinet это medecins_id
				self.ui.lb_cab.setText("Кабинет: " + str(Data.get_cabinet(self, medecins_id)))
					
			update_lb_cab(self)

			# Запуск функции с окном выбора кабинета и его настройками
			self.ui.btn_cab.clicked.connect(self.setiingsClicked)

		def test(self):
			print("1")


	# Функция запуска класса с диалоговым окном - настройки кабинета	
	def setiingsClicked(self):
		dlg = settings(self)
		dlg.exec()

# Диалоговое окно - настройки кабинета
class settings(Ui_Dialog, QDialog):
	def __init__(self, parent=None):
		super().__init__(parent)
		self.set = Ui_Dialog()
		self.set.setupUi(self)

		self.set.btn_save_cab.clicked.connect(self.update_cab)

	def update_cab(self):
		entry_cab = self.set.lineEdit.text()
		# Вызвать update_lb_cab здесь !
		Data.update_cab_sql(self, entry_cab, medecins_id)
		
		QDialog.close(self)
		

if __name__ == "__main__":
	app = QApplication(sys.argv)
	window = queue()
	window.show()

	sys.exit(app.exec())
  • Вопрос задан
  • 29 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@khan61
Насколько я понимаю, необходимо в качестве аргумента конструктора класса settings передать экземпляр класса queue и у него вызвать метод update_lb_cab.
class settings(Ui_Dialog, QDialog, QInstance):
  def __init__(self, parent=None):
    super().__init__(parent)
    self.set = Ui_Dialog()
    self.set.setupUi(self)

    self.set.btn_save_cab.clicked.connect(self.update_cab)

  def update_cab(self):
    entry_cab = self.set.lineEdit.text()
    self.QInstance.update_cab
    Data.update_cab_sql(self, entry_cab, medecins_id)
    
    QDialog.close(self)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы