Ich probiere gerade die verschiedenen Widgets aus Qt 5 durch. Einiges hat schon wie erwartet funktioniert, aber der QSlider bereitet mir ein paar kleinere Probleme.
sliderwindow.ui:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SliderWindow</class>
<widget class="QMainWindow" name="SliderWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>40</x>
<y>40</y>
<width>721</width>
<height>121</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_slider">
<property name="text">
<string>Slider</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSlider" name="horizontalSlider">
<property name="maximum">
<number>100</number>
</property>
<property name="sliderPosition">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_value">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>28</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
sliderwindow.py:
Code: Alles auswählen
import sys
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication, QDialog
from PySide2.QtCore import QFile
class SliderWindow(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.init_window()
def init_window(self):
self.file = QFile("sliderwindow.ui")
self.file.open(QFile.ReadOnly)
self.loader = QUiLoader()
self.window = self.loader.load(self.file)
self.window.show()
self.window.horizontalSlider.sliderMoved.connect(self.write_slider_value)
def write_slider_value(self):
self.slider_value = self.window.horizontalSlider.value()
self.window.label_value.setText(str(self.slider_value))
if __name__ == "__main__":
app = QApplication(sys.argv)
sliderwindow = SliderWindow()
sys.exit(app.exec_())
- Als `minimum` ist 0 und als `maximum` ist 100 für den QSlider im Qt Designer eingestellt. In der GUI reicht der QSlider allerdings nur von 1 bis 99. Warum ist das so?
- Fließkommazahlen für den Bereich des QSliders scheint der Qt Designer nicht zu mögen, weil er solche Werte in Integerzahlen rundet, sobald man sie eingegeben hat. Kann man für einen QSlider auch einen Bereich von 0.5 bis 9.5 mit der Schrittweite 0.1 angeben?
- Sobald der QSlider mit der Maus verschoben wird, würde ich gerne einen Tooltip mit dem jeweils aktuellen Wert neben dem Mauszeiger anzeigen lassen. Geht so etwas?
Atalanttore