Я погружаюсь в PyQt, и я столкнулся с небольшим раздражением. SLOT ('insertColumn ()') ничего не делает при подключении к кнопке в графическом интерфейсе. SLOT ('clear ()') работает отлично, а insertColumn () работает вне привязки. insertColumn () указан в качестве открытого слота в документации Qt, поэтому я застрял.
Вот код:
class MainWindow(QMainWindow):
def __init__(self, *args):
QMainWindow.__init__(self, *args)
# Table
self.tableWidget = QTableWidget(6, columnCount, self);
x = 0
for x in range(0, columnCount):
self.tableWidget.setColumnWidth(x, 30)
for x in range(0, 6):
self.tableWidget.setRowHeight(x, 24)
# Window geometery and layout
self.resize(800, 600)
self.setWindowTitle('PyTab')
self.setCentralWidget(self.tableWidget)
# Menu and toolbar actions
self.MenuExit = QAction(QIcon('exit.png'), 'Exit', self)
self.MenuExit.setShortcut('Ctrl+Q')
self.connect(self.MenuExit, SIGNAL('triggered()'), SLOT('close()'))
self.MenuAddColumn = QAction(QIcon('clear.png'), 'Add Column', self)
self.MenuAddColumn.setShortcut('Ctrl+N')
#This line works:
self.tableWidget.insertColumn(2)
# I'm not sure why this line isn't working:
self.connect(self.MenuAddColumn, SIGNAL('triggered()'), self.tableWidget, SLOT('insertColumn(2)'))
Я попытался определитьQTableWidget как tableWidget и self.tableWidget , но это ничего не изменило.
Кто-нибудь знает, что является причиной этого?
Вот окончательный код:
def add_column(self):
tableWidget.insertColumn(1)
self.MenuAddColumn.triggered.connect(add_column)
Он использует новый синтаксис .connect (), как описано в в этом вопросе SO .Еще раз спасибо!