Skip to content
Snippets Groups Projects
Commit 1a06d9b4 authored by Lucas Philippe's avatar Lucas Philippe
Browse files

Debut TP4, fin d'étape de la fenêtre principale et le chargement du layout

parent ba3378bc
No related branches found
No related tags found
Loading
import os
DATA_DIR = os.path.dirname(os.path.abspath(__file__))
LAYOUT_FILE = os.path.join(DATA_DIR, 'layout.json')
{
"keyWidth": 50,
"keyHeight": 20,
"keySpacing": 3,
"nbReco": 4,
"keys" : [
{ "symbol": "a", "x" : 0, "y" : 1, "width": 1 },
{ "symbol": "z", "x" : 1, "y" : 1, "width": 1 },
{ "symbol": "e", "x" : 2, "y" : 1, "width": 1 },
{ "symbol": "r", "x" : 3, "y" : 1, "width": 1 },
{ "symbol": "t", "x" : 4, "y" : 1, "width": 1 },
{ "symbol": "y", "x" : 5, "y" : 1, "width": 1 },
{ "symbol": "u", "x" : 6, "y" : 1, "width": 1 },
{ "symbol": "i", "x" : 7, "y" : 1, "width": 1 },
{ "symbol": "o", "x" : 8, "y" : 1, "width": 1 },
{ "symbol": "p", "x" : 9, "y" : 1, "width": 1 },
{ "symbol": "q", "x" : 1, "y" : 2, "width": 1 },
{ "symbol": "s", "x" : 0, "y" : 2, "width": 1 },
{ "symbol": "d", "x" : 2, "y" : 2, "width": 1 },
{ "symbol": "f", "x" : 3, "y" : 2, "width": 1 },
{ "symbol": "g", "x" : 4, "y" : 2, "width": 1 },
{ "symbol": "h", "x" : 5, "y" : 2, "width": 1 },
{ "symbol": "j", "x" : 6, "y" : 2, "width": 1 },
{ "symbol": "k", "x" : 7, "y" : 2, "width": 1 },
{ "symbol": "l", "x" : 8, "y" : 2, "width": 1 },
{ "symbol": "m", "x" : 9, "y" : 2, "width": 1 },
{ "symbol": "q", "x" : 1, "y" : 2, "width": 1 },
{ "symbol": "⇧", "x" : 0, "y" : 3, "width": 2 },
{ "symbol": "w", "x" : 2, "y" : 3, "width": 1 },
{ "symbol": "x", "x" : 3, "y" : 3, "width": 1 },
{ "symbol": "c", "x" : 4, "y" : 3, "width": 1 },
{ "symbol": "v", "x" : 5, "y" : 3, "width": 1 },
{ "symbol": "b", "x" : 6, "y" : 3, "width": 1 },
{ "symbol": "n", "x" : 7, "y" : 3, "width": 1 },
{ "symbol": "⇦", "x" : 8, "y" : 3, "width": 2 },
{ "symbol": " ", "x" : 0, "y" : 4, "width": 8 },
{ "symbol": "↵", "x" : 8, "y" : 4, "width": 2 }
]
}
\ No newline at end of file
import sys
from PyQt5.QtWidgets import QApplication
from src.widgets.EditeurWindow import EditeurWindow
def main():
app = QApplication(sys.argv)
window = EditeurWindow()
window.resize(1024, 800)
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
\ No newline at end of file
from PyQt5.QtCore import QRect, QPoint, QSize
class Key:
def __init__(self, x, y, keyWidth, keyHeight, keySpacing, width, symbol):
self.x = x * (keyWidth + keySpacing)
self.y = y * (keyHeight + keySpacing)
self.position = QPoint(self.x, self.y)
self.symbol = symbol
self.rect = QRect(self.x, self.y, width * (keyWidth + keySpacing) - keySpacing, keyHeight)
from PyQt5.QtWidgets import QWidget, QLineEdit, QVBoxLayout
from src.widgets.KeyboardWidget import KeyboardWidget
class EditeurWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Editeur')
# Création des widgets
line_edit = QLineEdit(self)
keyboard_widget = KeyboardWidget()
# Création du layout et ajout des widgets
layout = QVBoxLayout()
layout.addWidget(line_edit)
layout.addWidget(keyboard_widget)
self.setLayout(layout)
\ No newline at end of file
import json
from PyQt5.QtWidgets import QWidget
from documents.FileDefinition import LAYOUT_FILE
from src.model.Key import Key
class KeyboardWidget(QWidget):
def __init__(self):
super().__init__()
self.keys = []
self.keyWidth = None
self.keyHeight = None
self.keySpacing = None
# Initialiser le clavier
self.loadLayoutJson()
self.update()
def loadLayoutJson(self):
# Chargement du fichier JSON contenant les paramètres du clavier
with open(LAYOUT_FILE, "r") as f:
layout_clavier = json.load(f)
# Accéder aux paramètres
self.keyWidth = layout_clavier['keyWidth']
self.keyHeight = layout_clavier['keyHeight']
self.keySpacing = layout_clavier['keySpacing']
# Créer la clé de chaque touche
for keyData in layout_clavier['keys']:
self.keys.append(self.createKey(keyData))
def createKey(self, keyData):
return Key(keyData['x'], keyData['y'], self.keyWidth, self.keyHeight, self.keySpacing, keyData['width'], keyData['symbol'])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment