Hallo zusammen,
ich möchte gerade ein kleines Tool schreiben um für ein Würfelspiel Punkte mitzuschreiben und zu addieren. Hierfür hab ich mehrere Knöpfe die einen entsprechenden Wert Repräsentieren. Diese sollen je Runde und Knopfdruck aufaddiert werden, und nach Ende der Runde dem Spieler zugewiesen werden.
Wie kann man nun am elegantest/einfachsten den Wert von jedem Knopf bei jedem clicked-Event einer Variable aufaddieren?
Ich würde gerne (bisher aber noch ohne Erfolg) für jeden Button ein Signal mit dem entsprechenden Wert mitgeben um diesen dann aufaddieren zu können. Einige Beispiele mit benutzerdefinierten Signalen hab ich bereits gesehen, aber hab es noch nicht geschafft das auf mein Progrämmchen umzumünzen.
Ist die gedachte Vorgehensweise denn überhaupt in Euren Augen dafür geeignet oder gibt es evtl. einen leichteren oder eleganteren Weg das zu lösen?
Viele Grüße
JFHunter
PyQt4 Knopfdruck mit Werteübermittlung
@JFHunter: *Ein* Handler der den Wert als Argument übergeben bekommt und `functools.partial()` könnten hier auch nützlich sein.
Hallo,
leider hab ich die nicht gelungenen Beispiele nicht mehr gespeichert. Aktuell im Code ist ein Beispiel eingearbeitet mit einem benutzerdefinierten Signal, welches in dem Fall als print in der Konsole ausgegeben wird und auch nicht von Knopf getriggert wird.
Das ist auch noch genau mein Problem, wenn ich ein benutzerdefiniertes Signal senden will, wie kann ich dann sagen dass beim clicked-event des Buttons das Signal ausgesendet wird? Um die (noch auskommentierte) Zeile 17 geht es mir. Sofern der Ansatz überhaupt in Euren Augen als gut erachtet wird.
Bin ich mit der Vorgehensweise auf dem Holzweg, oder ist diese Grundsätzlich richtig?
JFHunter
leider hab ich die nicht gelungenen Beispiele nicht mehr gespeichert. Aktuell im Code ist ein Beispiel eingearbeitet mit einem benutzerdefinierten Signal, welches in dem Fall als print in der Konsole ausgegeben wird und auch nicht von Knopf getriggert wird.
Das ist auch noch genau mein Problem, wenn ich ein benutzerdefiniertes Signal senden will, wie kann ich dann sagen dass beim clicked-event des Buttons das Signal ausgesendet wird? Um die (noch auskommentierte) Zeile 17 geht es mir. Sofern der Ansatz überhaupt in Euren Augen als gut erachtet wird.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui
from quirkle_gui import Ui_MainWindow
class Main(QtGui.QMainWindow):
def __init__(self, *args):
QtGui.QMainWindow.__init__(self, *args)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
#self.ui.btn_2pkt.clicked.connect(self.ui.txt_points.setText, connect_to_signal)
def connect_to_signal(self):
self.mysignal.connect(self.myslot)
self.mysignal.emit("hello")
def myslot(self, param):
print("received %s" % param)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Main()
window.show()
sys.exit(app.exec_())
JFHunter
@JFHunter: Wenn etwas bei Druck auf die Schaltfläche passieren soll dann nimm doch das `clicked`-Signal. Genau dafür ist es doch da.