Форум сайта python.su
Привет Всем!Стал интересен такой момент:
Как на кнопку цеплять функцию понятно,а вот если мы программно создаем много кнопок,то как на каждую из них повесить свою функцию?
Например решил посмотреть на примере калькулятора:
text_button=[['7','8','9','/','sqrt'],['4','5','6','*','%'],['1','2','3','-','1/x'],['0','+/-',',','+','=']]
index_row_cell=0
index_column_cell=0
b=0
c=0
for i in range(4):
for j in range(5):
bt=QtGui.QPushButton(text_button[b][c])
kompanovka.addWidget(bt,index_row_cell,index_column_cell)
index_column_cell+=1
c+=1
b+=1
c=0
index_column_cell=0
index_row_cell+=1
Офлайн
может на все кнопки повешать один обработчик, а там уже разбирать какая кнопкам нажата, например по заголовку
Офлайн
o7412369815963Да спасибо, я типа такого и думал!только реализация пока хромает))попробуем еще разок напречь мозги)!
может на все кнопки повешать один обработчик, а там уже разбирать какая кнопкам нажата, например по заголовку
Отредактировано (Апрель 26, 2010 21:37:11)
Офлайн
Может поможет:
def buttonConnect ( button, code ) :
button.clicked.connect ( lambda : self.buttonClicked ( code ) )
buttonConnect ( self.digitButton_0, '0' ); buttonConnect ( self.digitButton_1, '1' )
buttonConnect ( self.digitButton_2, '2' ); buttonConnect ( self.digitButton_3, '3' )
buttonConnect ( self.digitButton_4, '4' ); buttonConnect ( self.digitButton_5, '5' )
buttonConnect ( self.digitButton_6, '6' ); buttonConnect ( self.digitButton_7, '7' )
buttonConnect ( self.digitButton_8, '8' ); buttonConnect ( self.digitButton_9, '9' )
buttonConnect ( self.pointButton, '.' ); buttonConnect ( self.changeSignButton, '+/-' )
buttonConnect ( self.backspaceButton, 'b' ); buttonConnect ( self.clearButton, 'c' )
buttonConnect ( self.divideButton, '/' ); buttonConnect ( self.multiplyButton, '*' )
buttonConnect ( self.minusButton, '-' ); buttonConnect ( self.plusButton, '+' )
buttonConnect ( self.equalButton, '=' ); buttonConnect ( self.squareRootButton, 'sqrt' )
buttonConnect ( self.powerButton, 'x**2' ); buttonConnect ( self.reciprocalButton, '1/x' )
buttonConnect ( self.percentButton, '%' )
self.okButton.clicked.connect ( self.okButtonClicked )
def buttonClicked ( self, code ) :
expr = str ( self.display.text () )
if code == 'b' : # backspace
self.display.setText ( expr [ : -1 ]
Офлайн
код калькулятора можно не тырить. он находится в примерах к PyQt, поставляемых вместе с библиотекой и тоже бесплатно:-)
Офлайн