Hi I tried to implement shortcut key, It work only for one slider, so I want to create a method to switch from one slider to another using keyboard shortcut(not implemented) and the selected slider shall be able to increase or decrease using keyboard shortcut. Here is the code(dummy).
Here is the slider class.
import sys
from PyQt5 import QtGui
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MySlider(QWidget):
def __init__(self, name, maxi, mini, font_size, orientation, parent=None):
super(MySlider, self).__init__(parent)
self.setMinimumSize(100, 200) # +++
self.update_shortcut()
# def make_slider(self, name, posx, posy, maxi, mini, font_size, orientation):
# """posx,posy,font_size,max,min = int orientation = Qt.Horizontal or Vertical,name = str name of slider"""
self.parent =parent
self.label = QLabel(name, self)
# self.label.setGeometry(posx - 30, posy - 45, 100, 40) # 210,60
self.label.setFont(QtGui.QFont("Sanserif", font_size))
self.slider = QSlider(self)
self.slider.setOrientation(orientation)
self.slider.setTickPosition(QSlider.TicksBelow)
self.slider.setMaximum(maxi)
self.slider.setMinimum(mini)
self.slider.setTickInterval(1)
# self.slider.move(posx, posy)
self.label2 = QLabel(str(mini), self)
self.label2.setFont(QtGui.QFont("Sanserif", font_size))
# self.label2.setGeometry(posx, posy + 90, 50, 20)
self.slider.valueChanged.connect(self.changed_value)
# ++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.label, alignment = Qt.AlignCenter)
self.layout.addWidget(self.slider, alignment = Qt.AlignCenter)
self.layout.addWidget(self.label2, alignment = Qt.AlignCenter)
self.layout.addStretch()
# ++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
def changed_value(self, val): # + val
print(val)
# wartosc = self.slider.value()
# self.label2.setText(str(wartosc))
self.label2.setNum(val)
def update_shortcut(self):
QShortcut(QKeySequence("CTRL+I"), self).activated.connect(self.increment_slider)
QShortcut(QKeySequence("CTRL+D"), self).activated.connect(self.decrement_slider)
def increment_slider(self):
print("updated")
self.slider.setValue(self.slider.value() + 10)
def decrement_slider(self):
self.slider.setValue(self.slider.value() - 10)
# + val
Here is the gui class.
class Window(QWidget):
# """kreowanie klasy okna"""
def __init__(self):
super().__init__()
self.setWindowTitle("Kalkulator liczby kombinacji")
# self.setGeometry(100, 60, 750, 320)
self.resize(750, 300)
self.setWindowIcon(QtGui.QIcon("icon.png"))
self.layout = QHBoxLayout(self) # +++
self.layout.addStretch()
self.test_slider2 = MySlider("Liczba\nczegos", 6, 1, 12, Qt.Vertical, self)
# self.test_slider2.make_slider((" Liczba\n czegos"), 140, 95, 6, 1, 12, Qt.Vertical)
self.layout.addWidget(self.test_slider2) # +++
self.test_slider3 = MySlider("Liczba\nczegos",6, 1, 12, Qt.Vertical, self)
# self.test_slider3.make_slider((" Liczba\n czegos"), 230, 95, 6, 1, 12, Qt.Vertical)
self.layout.addWidget(self.test_slider3) # +++
self.test_slider4 = MySlider("Liczba\nczegos",6, 1, 12, Qt.Vertical, self)
# self.test_slider4.make_slider((" Liczba\n czegos"), 320, 95, 6, 1, 12, Qt.Vertical)
self.layout.addWidget(self.test_slider4) # +++
self.test_slider5 = MySlider("Liczba\nczegos",6, 1, 12, Qt.Vertical, self)
# self.test_slider5.make_slider((" Liczba\n czegos"), 410, 95, 6, 1, 12, Qt.Vertical)
self.layout.addWidget(self.test_slider5) # +++
self.bumping_slider = MySlider("Kołek\nbumpingowy", 10, 1, 12, Qt.Vertical, self)
# self.bumping_slider.make_slider((" Kołek\nbumpingowy"), 500, 95, 10, 1, 12, Qt.Vertical)
self.layout.addWidget(self.bumping_slider) # +++
self.column_slider = MySlider("Liczba\nkolumn", 6, 1, 12, Qt.Vertical, self)
# self.column_slider.make_slider((" Liczba\n kolumn"), 590, 95, 6, 1, 12, Qt.Vertical)
self.layout.addWidget(self.column_slider) # +++
self.test_slider = MySlider("Liczba\nczegos", 6, 1, 12, Qt.Vertical, self)
# self.test_slider.make_slider((" Liczba\n czegos"), 680, 95, 6, 1, 12, Qt.Vertical)
self.layout.addWidget(self.test_slider) # +++
self.layout.addStretch()
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyle("Fusion")``
window = Window()
window.show()
sys.exit(app.exec())
Any leads or help will be appreciated.