aus tkinter

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
ganja
User
Beiträge: 101
Registriert: Mittwoch 3. Dezember 2014, 07:44

Re: aus tkinter

Beitragvon ganja » Dienstag 22. August 2017, 20:06

Da muß ich dir zu stimmen @Alfons Mittelmeyer bei mir dreht sich auch nichts!
# in gpio.py wird pin on und nach 10 seconds wieder off geschaltet
Aber so:
  1.     #!/usr/bin/python3
  2.     # -*- coding: utf-8 -*-
  3.          
  4.     import sys, math
  5.     from PyQt5 import QtCore, QtGui, QtWidgets
  6.     from PyQt5 import Qt
  7.     from PyQt5.uic import loadUi
  8.     from random import random
  9.  
  10.     import os
  11.     import sys
  12.     import time
  13.     import subprocess
  14.      
  15.          
  16.     class Application(Qt.QMainWindow):
  17.         def __init__(self, parent=None):
  18.             super().__init__(parent)
  19.             #### ohne border
  20.             #self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
  21.            
  22.             self.ui = loadUi("wheel_gui.ui", self)
  23.            
  24.             self.timer = QtCore.QTimer()
  25.             self.timer.timeout.connect(self.rotate_pixmap)
  26.      
  27.             self.start.clicked.connect(self.start_rotate_pixmap)
  28.             self.timer2 = QtCore.QTimer()
  29.             self.timer2.setSingleShot(True)
  30.             self.timer2.timeout.connect(self.stop_timer)
  31.            
  32.            
  33.             #pixmap = QtGui.QPixmap("pfeilunten1.png")
  34.             #self.label.setPixmap(
  35.                 #QtGui.QPixmap(pixmap).scaled(50, 50, QtCore.Qt.IgnoreAspectRatio, QtCore.Qt.SmoothTransformation))
  36.             #self.label.setAlignment(QtCore.Qt.AlignCenter)
  37.      
  38.             self.img = (QtGui.QImage("fortune.png").scaled(580, 580, QtCore.Qt.IgnoreAspectRatio,
  39.                                                                     QtCore.Qt.SmoothTransformation))
  40.      
  41.             self.pixmap = QtGui.QPixmap(self.img)
  42.      
  43.             diag = (self.pixmap.width() ** 0 + self.pixmap.height() ** 0) ** 0.0
  44.             self.label_2.setMinimumSize(diag, diag)
  45.             self.label_2.setAlignment(QtCore.Qt.AlignCenter)
  46.             self.label_2.setPixmap(self.pixmap)
  47.             self.rotation = 0
  48.      
  49.      
  50.         def rotate_pixmap(self):
  51.            
  52.             self.rotation = (self.rotation + self.step) % 360
  53.             if self.step < 9:
  54.                 if not self.rotation % 15:
  55.                     self.step -= 1
  56.                     if not self.step:
  57.                         self.timer.stop()
  58.                         print (self.rotation)
  59.             self.stop_check()
  60.                
  61.      
  62.             transform = QtGui.QTransform().rotate(self.rotation)
  63.             pixmap = self.pixmap.transformed(transform, QtCore.Qt.SmoothTransformation)
  64.             self.label_2.setPixmap(pixmap)
  65.      
  66.         def start_rotate_pixmap(self):
  67.             self.step = 9
  68.             self.timer.start(20)
  69.             self.timer2.start(int(4500+random()*1000))
  70.      
  71.         def stop_timer(self):
  72.             self.step = 8
  73.  
  74.        def stop_check(self):
  75.            if  0 <= self.rotation <= 60:
  76.                  print ("ja")
  77.                  self.check_gpio()
  78.            #
  79.            #
  80.  
  81.       def check_gpio(self):
  82.            self.gpio_on()
  83.            time.sleep(3)
  84.            self.gpio_off
  85.  
  86.     def gpio_on(self):
  87.          #time.sleep(0.1)
  88.          to_run = "./gpio.py"
  89.          proc=subprocess.Popen(to_run)
  90.  
  91.     def gpio_off(self):
  92.          subprocess.check_output('kill $(ps ax | grep gpio.py | grep -v grep | awk \\'\{print $1\}\\')',shell=True)}      
  93.      
  94.     def main():
  95.         app = Qt.QApplication(sys.argv)
  96.         app_now = Application()
  97.         app_now.show()
  98.         #full ohne border
  99.         #app_now.showFullScreen()
  100.         app.exec_()
  101.          
  102.     if __name__ == '__main__':
  103.         main()
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Re: aus tkinter

Beitragvon Alfons Mittelmeyer » Dienstag 22. August 2017, 20:20

@ganja: kann ich leider nicht nachvollziehen, denn ich bekomme folgenden Fehler:

Code: Alles auswählen

  File "wheel.py", line 74
    def stop_check(self):
                        ^
IndentationError: unindent does not match any outer indentation level
ganja
User
Beiträge: 101
Registriert: Mittwoch 3. Dezember 2014, 07:44

Re: aus tkinter

Beitragvon ganja » Dienstag 22. August 2017, 20:27

@Alfons Mittelmeyer ja das ist nicht richtig eingerückt, da habe ich ein Fehler bei copy paste, ich kann es nicht mehr bearbeiten
ganja
User
Beiträge: 101
Registriert: Mittwoch 3. Dezember 2014, 07:44

Re: aus tkinter

Beitragvon ganja » Mittwoch 23. August 2017, 11:31

Guten Morgen, @Alfons Mittelmeyer ich habe es hinbekommen, rad bleibt wie es sein soll, jetzt versuche ich deinen Tipp mit Button disable
ganja
User
Beiträge: 101
Registriert: Mittwoch 3. Dezember 2014, 07:44

Re: aus tkinter

Beitragvon ganja » Mittwoch 23. August 2017, 13:19

Jetzt habe ich wieder ein Problem, nach dem man Button anklickt, ist der Button Disabled nach 6,5 sec ist der wieder da bereit zu klicken, leider lässt sich der Button nicht mehr mit der Tastatur anklicken nur noch mit der Maus?
Diesmal einrücken beachtet
Danke

Gruß
ganja

  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3.          
  4. import sys, math
  5. from PyQt5 import QtCore, QtGui, QtWidgets
  6. from PyQt5 import Qt
  7. from PyQt5.uic import loadUi
  8. from random import random
  9.      
  10.          
  11. class Application(Qt.QMainWindow):
  12.     def __init__(self, parent=None):
  13.         super().__init__(parent)
  14.            
  15.         self.ui = loadUi("wheel_gui.ui", self)
  16.            
  17.         self.timer = QtCore.QTimer()
  18.         self.timer.timeout.connect(self.rotate_pixmap)
  19.      
  20.         self.start.clicked.connect(self.start_rotate_pixmap)
  21.         self.timer2 = QtCore.QTimer()
  22.         self.timer2.setSingleShot(True)
  23.         self.timer2.timeout.connect(self.stop_timer)
  24.        
  25.         self.timer_button = QtCore.QTimer()
  26.      
  27.         self.img = (QtGui.QImage("fortune.png").scaled(580, 580, QtCore.Qt.IgnoreAspectRatio,
  28.                                                                     QtCore.Qt.SmoothTransformation))
  29.      
  30.         self.pixmap = QtGui.QPixmap(self.img)
  31.      
  32.         diag = (self.pixmap.width() ** 0 + self.pixmap.height() ** 0) ** 0.0
  33.         self.label_2.setMinimumSize(diag, diag)
  34.         self.label_2.setAlignment(QtCore.Qt.AlignCenter)
  35.         self.label_2.setPixmap(self.pixmap)
  36.         self.rotation = 0
  37.      
  38.      
  39.     def rotate_pixmap(self):
  40.         self.rotation = (self.rotation + self.step) % 360
  41.         if self.step < 9:
  42.             if not self.rotation % 15:
  43.                 self.step -= 1
  44.                 if not self.step:
  45.                     self.timer.stop()
  46.                     print (self.rotation)
  47.                
  48.      
  49.         transform = QtGui.QTransform().rotate(self.rotation)
  50.         pixmap = self.pixmap.transformed(transform, QtCore.Qt.SmoothTransformation)
  51.         self.label_2.setPixmap(pixmap)
  52.      
  53.     def start_rotate_pixmap(self):
  54.         self.check_button()
  55.         self.step = 9
  56.         self.timer.start(20)
  57.         self.timer2.start(int(4500+random()*1000))
  58.      
  59.     def stop_timer(self):
  60.         self.step = 8      
  61.        
  62.     def check_button(self):
  63.         self.start.setEnabled(False)
  64.         self.timer_button.singleShot(6500, lambda: self.start.setDisabled(False))
  65.      
  66. def main():
  67.     app = Qt.QApplication(sys.argv)
  68.     app_now = Application()
  69.     app_now.show()
  70.     app.exec_()
  71.          
  72. if __name__ == '__main__':
  73.     main()
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Re: aus tkinter

Beitragvon Alfons Mittelmeyer » Mittwoch 23. August 2017, 15:46

ganja hat geschrieben:Jetzt habe ich wieder ein Problem, nach dem man Button anklickt, ist der Button Disabled nach 6,5 sec ist der wieder da bereit zu klicken, leider lässt sich der Button nicht mehr mit der Tastatur anklicken nur noch mit der Maus?
Diesmal einrücken beachtet
Danke

Ich kenne mich ja nicht mit qt aus und kann Dir nicht sagen, wie der Befehl heißt.
Die Ursache ist, dass zu Beginn der Start Button den Fokus hat. Nach Drehen des Rades hat er ihn aber nicht.
Also den Fokus wieder auf den Button setzen. Wahrscheinlich verliert der Button bei setEnabled(False) den Fokus.

Oder auch in der übrigen Gui den Leertastendruck implementieren.
Klar dass Du dann nicht beim Start die GUI auf disabled setzt, sondern nur den connect zurücknimmst.
ganja
User
Beiträge: 101
Registriert: Mittwoch 3. Dezember 2014, 07:44

Re: aus tkinter

Beitragvon ganja » Mittwoch 23. August 2017, 16:35

Ja mit dem setFocus habe ich schon probiert, einmal taste drücken Button wird irgendwie aktiviert oder so ähnlich beim 2 mal taste drücken dreht sich das Rad, vielleicht bin ich mit setFocus an der falschen stelle.
Ich habe es, es war die falsche stelle.
Danke @Alfons Mittelmeyer
  1. def rotate_pixmap(self):
  2.         self.start.setEnabled(False)
  3.         self.rotation = (self.rotation + self.step) % 360
  4.         if self.step < 9:
  5.             if not self.rotation % 15:
  6.                 self.step -= 1
  7.                 if not self.step:
  8.                     self.timer.stop()
  9.                     print (self.rotation,"rotation")
  10.                     self.stop_check()
  11.                     self.start.setEnabled(True)
  12.                     self.start.setFocus(True)
  13.                    
  14.         transform = QtGui.QTransform().rotate(self.rotation)
  15.         pixmap = self.pixmap.transformed(transform, QtCore.Qt.SmoothTransformation)
  16.         self.label_2.setPixmap(pixmap)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder