ihm avec python Qt
ihm avec python Qt
REM: Exemples en python 3
Recopie d’un Message
|
|
#! /usr/bin/python3
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout
########################################################################
# FUNCTIONS
########################################################################
def onPushCopy():
var = line_source.text()
print(var)
line_dest.setText(var)
line_source.clear()
########################################################################
# UI
########################################################################
if __name__ == "__main__" :
app = QApplication(sys.argv)
w = QWidget()
w.resize(300,300)
w.setWindowTitle("Copy Example")
# Elements de l'IHM
label_source = QLabel(w)
label_source.setText("Source :")
label_dest = QLabel(w)
label_dest.setText("Destination :")
line_source = QLineEdit(w)
line_dest = QLineEdit(w)
btn = QPushButton(w)
btn.setText('COPY')
btn.clicked.connect(onPushCopy) # Action associée à l'appui sur le bouton ( signal )
# Disposition des Elements
vb = QVBoxLayout(w)
vb.addWidget(label_source)
vb.addWidget(line_source)
vb.addStretch()
vb.addWidget(btn)
vb.addStretch()
vb.addWidget(label_dest)
vb.addWidget(line_dest)
w.show()
sys.exit(app.exec_())
########################################################################
Version ORIENTE OBJET :
#! /usr/bin/python3
import sys
from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QLabel, QLineEdit, QPushButton, QVBoxLayout
########################################################################
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
# Elements de l'IHM
self.setMinimumSize(300, 300)
self.setWindowTitle("Copy Example")
self.label_source = QLabel(self)
self.label_source.setText('Source :')
self.label_dest = QLabel(self)
self.label_dest.setText('Destination :')
self.line_source = QLineEdit(self)
self.line_dest = QLineEdit(self)
self.btn = QPushButton(self)
self.btn.setText('COPY')
self.btn.clicked.connect(self.onPushCopy) # Action associée à l'appui sur le bouton ( signal )
# Disposition des Elements
widget = QWidget()
self.setCentralWidget(widget)
vb = QVBoxLayout(widget)
vb.addWidget(self.label_source)
vb.addWidget(self.line_source)
vb.addStretch()
vb.addWidget(self.btn)
vb.addStretch()
vb.addWidget(self.label_dest)
vb.addWidget(self.line_dest)
def onPushCopy(self):
var = self.line_source.text()
print(var)
self.line_dest.setText(var)
self.line_source.clear()
########################################################################
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
########################################################################
Chronomètre
|
|
#! /usr/bin/python3
import sys
from PyQt5 import QtCore
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QLabel, QLineEdit, QPushButton, QGridLayout, QLCDNumber
########################################################################
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
# Elements de l'IHM
self.setMinimumSize(300, 300)
self.setWindowTitle("Chrono")
self.lcd = QLCDNumber(self)
self.btn_start = QPushButton(self)
self.btn_start.setText('start')
self.btn_start.clicked.connect(self.onPushStart)
self.btn_stop = QPushButton(self)
self.btn_stop.setText('stop')
self.btn_stop.clicked.connect(self.onPushStop)
self.btn_reset = QPushButton(self)
self.btn_reset.setText('reset')
self.btn_reset.clicked.connect(self.onPushReset)
# Disposition des Elements
widget = QWidget()
self.setCentralWidget(widget)
grid_layout = QGridLayout(widget)
grid_layout.addWidget(self.btn_start,0,0)
grid_layout.addWidget(self.btn_stop,1,0)
grid_layout.addWidget(self.lcd,0,1)
grid_layout.addWidget(self.btn_reset,1,1)
# Timer
countTimer=0;
self.timer_chrono = QTimer()
self.resetCount();
self.timer_chrono.timeout.connect(self.onTimerTick)
def resetCount(self):
self.countTimer=0
print(self.countTimer)
self.lcd.display(self.countTimer)
def onPushStart(self):
self.timer_chrono.start(1000)
self.lcd.display(self.countTimer)
def onPushStop(self):
self.timer_chrono.stop()
def onPushReset(self):
self.resetCount();
def onTimerTick(self):
self.countTimer=self.countTimer+1
print(self.countTimer)
self.lcd.display(self.countTimer)
########################################################################
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
########################################################################
Python-Qt et laison série UART (RS232)
|
|
#! /usr/bin/python3
import sys
from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QLabel, QLineEdit, QPushButton, QVBoxLayout
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
nameport='/dev/ttyACM0'
baudrate=115200
########################################################################
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
# Elements de l'IHM
self.setMinimumSize(300, 300)
self.setWindowTitle("UART Example")
self.label_toSend = QLabel(self)
self.label_toSend.setText('Message à Envoyer :')
self.label_recvd = QLabel(self)
self.label_recvd.setText('Message Reçu :')
self.line_toSend = QLineEdit(self)
self.line_recvd = QLineEdit(self)
self.btn_send = QPushButton(self)
self.btn_send.setText('Send Message')
self.btn_send.clicked.connect(self.onPushSend) # Action associée à l'appui sur le bouton ( signal )
# Disposition des Elements
widget = QWidget()
self.setCentralWidget(widget)
vb = QVBoxLayout(widget)
vb.addWidget(self.label_toSend)
vb.addWidget(self.line_toSend)
vb.addStretch()
vb.addWidget(self.btn_send)
vb.addStretch()
vb.addWidget(self.label_recvd)
vb.addWidget(self.line_recvd)
# Serial Port
self.serial=0
self.openSerialPort()
self.serial.readyRead.connect(self.readData)
def openSerialPort(self):
self.serial = QSerialPort()
self.serial.setPortName(nameport)
r = self.serial.open(QtCore.QIODevice.ReadWrite)
if not r:
print('Port open error')
else:
print('Port opened')
self.serial.setBaudRate(baudrate)
self.serial.setStopBits(1)
self.serial.setParity(0) # no parity
self.serial.setDataBits(8)
self.serial.setFlowControl(0)
def onPushSend(self):
text_to_send = self.line_toSend.text()
print(text_to_send)
self.serial.write(text_to_send.encode())
self.line_toSend.clear()
def readData(self):
data=self.serial.readAll()
print(str(data))
self.line_recvd.setText(str(data))
########################################################################
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
########################################################################
Installation
$ sudo apt-get install python python3-qt python3-serial