from PyQt4.QtGui import *
header1 = ['N', 'Тип', 'V', 'Pг', 'Pн', 'Qн']
header2 = ['Nн', 'Nк', 'R', 'X']
class MyTable(QTableWidget):
def __init__(self, header, *args):
QTableWidget.__init__(self, *args)
self.header = header
self.setHorizontalHeaderLabels(header)
self.setColumnWidth(0, 40)
self.setColumnWidth(1, 40)
self.resizeRowsToContents()
class MainWidget(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setGeometry(250, 150, 400, 300)
self.setWindowTitle("Ньютон")
tab_widget = QTabWidget()
tab1 = QWidget()
tab2 = QWidget()
tab3 = QWidget()
tab_widget.addTab(tab1, "Узлы")
tab_widget.addTab(tab2, "Ветви")
tab_widget.addTab(tab3, "Расчет")
#Uzli on tab1
table1 = MyTable(header1, 3, 6, tab1)
table1.resize(500, 2222)
table1.show()
#Vetvi on tab2
table2 = MyTable(header2, 1, 4, tab2)
table2.resize(500, 2222)
table2.show()
#bottom del
btn_del1 = QPushButton("delete row", tab1)
btn_del1.clicked.connect(self.row)
btn_del1.move(510, 0)
#layout
vbox = QVBoxLayout()
vbox.addWidget(tab_widget)
self.setLayout(vbox)
def row(self):
self.table1.removeRow(table1.selectedRows)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
widget = MainWidget()
widget.resize(640, 480)
widget.show()
sys.exit(app.exec_())
В теории, нажатие на кнопку должно удалить выделенную строку в таблице во вкладке “узлы”, однако выдает ошибку:
\Traceback (most recent call last):
File "D:/tests/table.py", line 53, in row
self.table1.removeRow(table1.selectedRows)
AttributeError: 'MainWidget' object has no attribute 'table1'
Как понимаю, вся проблема в классах, но что сделать, чтобы исправить ошибку - нужна помощь.