Ich habe ein LCD-Display (lcdCounter), auf dem ich die Zeit hochzählen möchte. Dazu habe ich 3 RadioButtons (radioButton_250 und radioButton_500) und einen Start u. Stop Button mit dem QtDesigner erstellt.
Mit den Radio-Buttons soll ausgewählt werden, wie schnell der Counter zählt, also 1000ms, 500ms, 250ms (oder 1Hz, 2Hz, 4Hz)
Hier der Code (die .ui kann auf Wunsch auch hochgeladen werden):
Code: Alles auswählen
import sys
from PyQt4.uic import loadUiType
from PyQt4 import QtGui, QtCore
Ui_MainWindow, QMainWindow = loadUiType('Main_Window.ui')
class Main(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setupUi(self)
self.timer = QtCore.QTimer(self)
self.manuell_button_Start.clicked.connect(self.Start)
self.manuell_button_Stop.clicked.connect(self.Stop)
self.timer.timeout.connect(self.StartUpdate)
def Start(self):
global zeitschritt
if self.radioButton_250.isChecked() == True:
zeitschritt = 250
elif self.radioButton_500.isChecked() == True:
zeitschritt = 500
else:
zeitschritt = 1000
self.timer.start(zeitschritt)
def StartUpdate(self):
if self.radioButton_250.isChecked() == True:
tim = self.lcdCounter.value() + 0.25
elif self.radioButton_500.isChecked() == True:
tim = self.lcdCounter.value() + 0.5
else:
tim = self.lcdCounter.value() + 1.0
disptime = round(tim, 4)
self.lcdCounter.display(str(disptime))
def Stop(self):
self.timer.stop()
app = QtGui.QApplication(sys.argv)
main = Main()
if __name__ == '__main__':
main.show()
sys.exit(app.exec_())
Das Springen bei 2Hz (1,5 Sekunden) konnte ich verhindern, indem ich die Anzeige in einem String darstelle. Dies funktioniert bei 4Hz leider nicht mehr.
Kann man im QtDesigner einstellen, dass er immer 2 Kommastellen darstellt (also auch 1,00 Sekunden)?
Außerdem hätte ich gerne gewusst, wie man auf einem Label °C anzeigt
Code: Alles auswählen
temp = 20
self.label_Temperatur.setText('Die Temperatur ist: ' + str(temp) + ' °C')
(# -*- coding: utf-8 -*- steht ganz oben drin)
Danke.