2016-04-12 33 views
0

Ben kurulum bir Ana pencere değerini aktarmak için:nasıl Aşağıdaki kodları ile başka bir sınıftan Ana pencerede widget'larına

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) 

başka piton dosyasında, bir sınıf vardır: BookingSpaceClass. Bu sınıfta ben veritabanından bazı verileri almak ve ana penceresinde tablo widget'ı içine bu verileri koyacağız:

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) 

nasıl Ana pencerenin Widget'a table_click_action aldığımız verileri aktarabilir?

cevap

0

Örneğinizden neden BookingSpaceClass niçin mevcut olması gerektiği açık değildir. Sadece referansları ana sınıfın yaptığı aynı gui widget'larına depolamaktır. table_click_action yöntemi, ana sınıfta da kolayca yapılabilir. Muhtemelen itemClicked sinyalini ana sınıftaki bir yuvaya bağlamanız ve her şeyi BookingSpaceClass'dan ana sınıfa taşımanız ya da en azından sinyalleri kullanmak yerine ana sınıftan BookingSpaceClass yardımcı yöntemlerini çağırmanız gerekir.

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

@QtCore.pyqtSlot() 
def on_itemClicked(self) 
    return_data = self.space_booking_class.table_click_action()