[Python/Tkinter] Button up en down events

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
Beste Allemaal,

Ik stuur met een python scriptje mijn relaiskaart aan en daarmee laat ik een projectie-scherm zakken. Nu ben ik wat aan het stoeien met tkinter om een simpele interface te maken daarvoor. Buttons werken allemaal prima. Alleen kan ik nergens vinden hoe ik 2 apparte functies met een button up en button down event kan aanroepen.

Als ik me knop indruk moet hij een poort aanzetten en als ik hem weer loslaat weer uit.

Ik heb gezocht naar dingen zoals: button, event, click, up, down en dat gecombineerd maar niks gevonden. Uit de documentatie word ik ook niet veel wijzer.

Zou niet weten waar ik anders moet kijken. Kan iemand mij opweg helpen ?
Alvast bedankt!

Hallo!


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Ik ken TKinter niet, maar als ik deze pagina bekijk zou zoiets moeten werken:
Python:
1
2
3
4
5
6
7
8
9
10
class Foo:
    def bla(self):
        button.bind("<Button-1>", self.start)
        button.bind("<ButtonRelease-1>", self.stop)

    def start(self, e):
        print "Start!"
  
    def stop(self, e):
        print "Stop!"

Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
Bedankt voor je antwoord.
Ik ben er even mee wezen stoeien. En ik kan alleen maar iets doen met leeg dialoog venster die de coördinaten van je muis terug stuurt als je klikt. Dan kan ik wel gaan pielen met als je op coördinaat x/y klikt moet je dat doen. Maar dat lijk mij niet echt een nette oplossing. Daarnaast krijg ik het ook niet voor elkaar om er een normale knop bij te zetten.

Is er niet een geheel andere oplossing hiervoor, een andere gui libary ofzo ?

Hallo!


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Yoram schreef op dinsdag 01 juni 2010 @ 22:54:
Is er niet een geheel andere oplossing hiervoor, een andere gui libary ofzo ?
Ik hoopte al dat je dat zou vragen ;) Ik zou PyQt aanraden, die is zeer compleet en je hebt onder elk OS een native interface. Let wel op dat je voor commerciële software een licentie nodig hebt! Men (Nokia zelf) werkt aan nieuwe bindings die wel vrij te gebruiken zijn, maar die zijn nog niet stabiel. Anders kun je wxPython of PyGTK proberen. Een simpele opzet met PyQt:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
from PyQt4.QtGui import *
 
class MainWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        vbox = QVBoxLayout()
        label = QLabel("Klik onderstaande button:")
        button = QPushButton("Test")
        
        vbox.addWidget(label)
        vbox.addWidget(button)
        self.setLayout(vbox)       
        
        button.pressed.connect(self.start)
        button.released.connect(self.stop)
        
        self.resize(200, 100)
        self.setWindowTitle("Test!")
    
    def start(self):
        print "Start!"
    
    def stop(self):
        print "Stop!"
        
app = QApplication(sys.argv)        
w = MainWindow()
w.show()
sys.exit(app.exec_())

Start dit in een console en dan zie je een bericht als je de knop indrukt en weer loslaat. Je kunt wellicht Qt Designer gebruiken om de interface te bouwen, maar voor kleine scripts werkt dit ook.

PyGTK en wxPython werken op ongeveer dezelfde manier.

[ Voor 16% gewijzigd door user109731 op 02-06-2010 00:18 ]