2016-04-12 2 views
0

Iセットアップのメインウィンドウを値を転送する:がどのように以下のコードを別のクラスから、メインウィンドウ内のウィジェットに

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ファイルでは、クラスがあります:BookingSpaceClass。 このクラスでは、私は、データベースからいくつかのデータを取得すると、メインウィンドウにテーブルウィジェットにこれらのデータを置く:

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から取得したデータを転送することができますか?

答えて

0

あなたの例では、なぜBookingSpaceClassが存在する必要があるのか​​はっきりしません。メインクラスと同じGUIウィジェットへの参照を格納するだけです。 table_click_actionメソッドは、メインクラスと同じように簡単にできます。おそらくitemClicked信号をメインクラスのスロットに接続し、BookingSpaceClassからメインクラスに移動するか、シグナルを使用する代わりにメインクラスのヘルパーメソッドBookingSpaceClassを呼び出してください。

self.tableWidget.itemClicked.connect(self.on_itemClicked) 

@QtCore.pyqtSlot() 
def on_itemClicked(self) 
    return_data = self.space_booking_class.table_click_action() 
関連する問題