如何将值从另一个 class 转移到 Main window 中的小部件
how to transfer value to widgets in Main window from another class
我使用以下代码设置了 Main window:
import Main_BookSpace
class MainWindowClass(QtWidgets.QMainWindow, Ui_MainWindow, QtWidgets.QAction):
def __init__(self):
super(MainWindowClass, self).__init__()
self.setupUi(self)
# SQL Database relate
self.database = Main_database.DataBaseRelate()
# init space booking sheet
self.space_booking_class = Main_BookSpace.BookingSpaceClass(self.tableWidget, self.database)
self.tableWidget.itemClicked.connect(self.space_booking_class.table_click_action)
在另一个 python 文件中,有一个 class:BookingSpaceClass
。
在这个 class 中,我将从数据库中获取一些数据,并将这些数据放入 Main window 中的 table 小部件中:
class BookingSpaceClass:
def __init__(self, theTable, database):
self.theTable = theTable
self.database = database
def table_click_action(self):
indexes = self.theTable.selectionModel().selectedIndexes()
data_id = self.theTable.item(indexes[0].row(), 23).text()
return_data = self.database.read_data_with_id("spacebooking", data_id)
print(return_data)
如何将从 table_click_action 获取的数据传输到 Main window 的小部件?
从您的示例中并不清楚为什么 BookingSpaceClass
需要存在。它只是存储对与主 class 完全相同的 gui 小部件的引用。 table_click_action
方法可以很容易地放在主 class 上。您可能应该将 itemClicked
信号连接到主 class 上的一个插槽,并将所有内容从 BookingSpaceClass
移动到主 class,或者至少调用 BookingSpaceClass
来自主要 class 的辅助方法,而不是使用信号。
self.tableWidget.itemClicked.connect(self.on_itemClicked)
@QtCore.pyqtSlot()
def on_itemClicked(self)
return_data = self.space_booking_class.table_click_action()
我使用以下代码设置了 Main window:
import Main_BookSpace
class MainWindowClass(QtWidgets.QMainWindow, Ui_MainWindow, QtWidgets.QAction):
def __init__(self):
super(MainWindowClass, self).__init__()
self.setupUi(self)
# SQL Database relate
self.database = Main_database.DataBaseRelate()
# init space booking sheet
self.space_booking_class = Main_BookSpace.BookingSpaceClass(self.tableWidget, self.database)
self.tableWidget.itemClicked.connect(self.space_booking_class.table_click_action)
在另一个 python 文件中,有一个 class:BookingSpaceClass
。
在这个 class 中,我将从数据库中获取一些数据,并将这些数据放入 Main window 中的 table 小部件中:
class BookingSpaceClass:
def __init__(self, theTable, database):
self.theTable = theTable
self.database = database
def table_click_action(self):
indexes = self.theTable.selectionModel().selectedIndexes()
data_id = self.theTable.item(indexes[0].row(), 23).text()
return_data = self.database.read_data_with_id("spacebooking", data_id)
print(return_data)
如何将从 table_click_action 获取的数据传输到 Main window 的小部件?
从您的示例中并不清楚为什么 BookingSpaceClass
需要存在。它只是存储对与主 class 完全相同的 gui 小部件的引用。 table_click_action
方法可以很容易地放在主 class 上。您可能应该将 itemClicked
信号连接到主 class 上的一个插槽,并将所有内容从 BookingSpaceClass
移动到主 class,或者至少调用 BookingSpaceClass
来自主要 class 的辅助方法,而不是使用信号。
self.tableWidget.itemClicked.connect(self.on_itemClicked)
@QtCore.pyqtSlot()
def on_itemClicked(self)
return_data = self.space_booking_class.table_click_action()