Mam 8 PushButtons stworzonych w designerze. Jak nadać im nazwy w programie i sygnały?
Tu bym zaczął https://wiki.qt.io/Qt_Buttons
Tak z ciekawości — jest jakiś powód, dla którego korzystasz z PyQt 4, podczas gdy już szóstka wyszła?
W dokumentacji nie piszą o takich rzeczach.
Dynamicznie można to tak zrobić:
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
layout = QHBoxLayout()
self.setLayout(layout)
for i in range(10):
button = QPushButton(str(i), self)
button.setObjectName('button_' + str(i))
button.clicked.connect(self.test)
layout.addWidget(button)
def test(self):
button = self.sender()
print(f'Button Object name: {button.objectName()}\nButton Text: {button.text()}')
if __name__ == '__main__':
app = QApplication([])
example = Example()
example.show()
app.exec()
Jakiś konkretny powód ku temu? Trochę nie kumam zasadności tego zabiegu.
Krótszy? Napisz i zapodaj tu. Zaciekawiłeś mnie. Powód jest taki, że muszę nadać nazwy i sygnały dynamicznie. Robię archiwum tv.
xenix33 napisał(a):
Krótszy? Napisz i zapodaj tu. Zaciekawiłeś mnie. Powód jest taki, że muszę nadać nazwy i sygnały dynamicznie. Robię archiwum tv.
A nie możesz po prostu nadać im nazw w designerze, i potem zrobić array z nimi? I odnosić się do tego array'a po indexie?
No można. Też o tym myślałem.
xenix33 napisał(a):
No można. Też o tym myślałem.
Wydaje mi się że pomysł z nazwami to X/Y. Bo tak na prawdę chcesz po prostu spójny dostęp do wszystkich przycisków "na raz". I najlepszym wyjściem do tego jest traktować je jako kolekcję (np array).
Pomysł żeby dobierać się po nich po dynamicznych nazwach, w mojej opinii w ogóle nie jest warty rozważania w takim wypadku.
Można i tak.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.