Я пытаюсь выровнять QSlider и QLabel, которые у меня есть в QGridBoxLayout
Для справки, это для просмотра кадров в видео, которые показаны в другом месте.QLabel здесь для показа помеченных разделов видео, с зелеными участками, которые «помечены», и черными участками, которые «не помечены»
Мой QSLider инициализируется как:
self.slider = QSlider(Qt.Horizontal, self)
self.slider.setSingleStep(1)
self.slider.setFocusPolicy(Qt.NoFocus)
self.slider.valueChanged.connect(self.sliderChanged)
self.layout.addWidget(self.slider)
QLabelсодержит QPixmap, который имеет QImage, созданный из массива массива фигуры (100,1000,3).Вот как он инициализируется:
image = np.zeros((100,1000,3), dtype=np.uint8) #Initialize a black picture
for combo in indices_list:
start, end = combo
start = int(start / self.length * 1000)
end = int(end / self.length * 1000)
image[:,start:end] = [0,255,0] #Label the columns as green
height, width, bytevalue = image.shape
qimage = QImage(image, width, height, bytevalue * width, QImage.Format_RGB888)
pixmap = QPixmap(qimage)
self.label.setPixmap(pixmap)
Код, приведенный выше, берет список начальных и конечных индексов, а затем меняет столбцы в этом диапазоне на зеленый.
Проблема Iу меня есть то, что, хотя QSlider и QLabel сложены вместе в QVBoxLayout, положение ползунка не всегда совпадает с соответствующим пикселем.Я полагаю, что это потому, что крайняя левая сторона «ручки» ползунка (я не уверен в правильном названии) останавливается на самой левой стороне ползунка.Они совпадают непосредственно в центре, а затем совпадают все меньше и меньше по мере удаления от центра.
Я бы хотел, чтобы центр ручки находился непосредственно под соответствующим столбцом в QLabel для текущегоЗначение ползунка.
Я попытался установить поля ползунка на 0, но это не сработало.
Спасибо за вашу помощь.
Редактировать:
Фотографии, вероятно, будут полезны:
Вот изображение всего бара:
Вот его изображение не выравнивается по левому краю:
Вот его изображение не выровнено посправа:
И, наконец, вот он по центру: