I'd like to be able to show Xbox controller events on a very simple GUI using PyQt5 which was created using the QT Designer. I'm using xbox360controller Python package to communicate the controller with my Python interface. The following example code works as it should, and instead of printing the values I'd like to set the text on the only label on the GUI:
import signal
from xbox360controller import Xbox360Controller
def on_button_pressed(button):
print('Button {0} was pressed'.format(button.name))
def on_button_released(button):
print('Button {0} was released'.format(button.name))
def on_axis_moved(axis):
print('Axis {0} moved to {1} {2}'.format(axis.name, axis.x, axis.y))
try:
with Xbox360Controller(0, axis_threshold=0.2) as controller:
# Button A events
controller.button_a.when_pressed = on_button_pressed
controller.button_a.when_released = on_button_released
# Left and right axis move event
controller.axis_l.when_moved = on_axis_moved
controller.axis_r.when_moved = on_axis_moved
signal.pause()
except KeyboardInterrupt:
pass
This is the simple GUI:
My idea was something like this, but I'm very lost:
class MainWindow(Ui_MainWindow, Ui_MainClass):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.controller = Xbox360Controller(0, axis_threshold=0.2)
self.controller.button_a.when_pressed = on_button_pressed()
self.controller.button_a.when_released = on_button_released()
# Left and right axis move event
self.controller.axis_l.when_moved = on_axis_moved
self.controller.axis_r.when_moved = on_axis_moved
def on_button_pressed(self, button):
print('Button {0} was pressed'.format(button.name))
self.label_joy.setText(f'Button {0} was pressed'.format(button.name))
def on_button_released(self, button):
print('Button {0} was released'.format(button.name))
self.label_joy.setText(f'Button {0} was released'.format(button.name))
def on_axis_moved(self, axis):
print('Axis {0} moved to {1} {2}'.format(axis.name, axis.x, axis.y))
self.label_joy.setText('Axis {0} moved to {1} {2}'.format(axis.name, axis.x, axis.y))
if __name__ == "__main__":
app = QApplication([])
form = MainWindow()
form.show()
sys.exit(app.exec_())
(I'm using Ubuntu 18.04)
