Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Python3 PyQt5 probleempje  (gelezen 370 keer)

Offline BaukeP

  • Lid
  • Steunpunt: Nee
Python3 PyQt5 probleempje
« Gepost op: 2018/01/31, 22:04:03 »
Hallo,

Met de volgende code heb ik een probleempje:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys

class MainWindow(QMainWindow):

    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.setWindowTitle("Waarde Coins")

        grid = QGridLayout()
        self.setLayout(grid)

        # create matrix: "le" wordt een LineEdit, "" wordt overgeslagen en de rest wordt Label
        cells = ["", "<b>Totaal</b>", "<b>BTC</b>", "<b>ETH</b>", "<b>LTC</b>",
                 "Aantal:", "", "le", "le", "le",
                 "Aantal DGB:", "", "le", "le", "le",
                 "Waarde USD:", "le", "le", "le", "le",
                 "<b>Waarde EURO:</b>", "le", "le", "le", "le",
                 "Investering in EURO:", "le", "", "", "", ]
        positions = [(row, col) for row in range(6) for col in range(5)]
        for positions, cells in zip(positions, cells):
            # Create the labels and lineEdits from  matrix
            # print("Positions (row,col):", "cel" + str(positions[0]) + "-" + str(positions[1]))
            cell = name = "cel" + str(positions[0]) + "-" + str(positions[1])
            if cells == "":
                continue
            elif cells == 'le':
                cell = QLineEdit()
                cell.setAlignment(Qt.AlignRight)
                cell.textChanged.connect(lambda x, pos=positions, name=name: self.my_custom_fn(x, pos, name))
                if positions[0] == 3 or positions[0] == 4:
                    cell.setDisabled(1)
            else:
                cell = QLabel(cells)
                if positions[0] == 0:
                    cell.setAlignment(Qt.AlignCenter)

            grid.addWidget(cell, *positions)

        widget = QWidget()
        widget.setLayout(grid)

        self.setCentralWidget(widget)

    def my_custom_fn(self, a, pos, name):
        print("Invoer : ", a)
        print("Pos    : ", pos)
        print("Name   : ", name)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    ui = MainWindow()
    ui.show()
    sys.exit(app.exec_())

Op basis van de list 'cells' worden de labels en lineEdits aangemaakt. Gaat prima.
In de functie (my_custom_fn) die aangeroepen wordt, krijg ik keurig de waarde en cell coördinaten door. Maar nu wil ik op basis van die ingevoerde waarde iets berekenen en dat resultaat in een andere lineEdit zetten. En dat lukt voor geen meter. Hoe doe ik dat?

Het gebruik van QTableWidget was misschien gemakkelijker, maar dit lijkt me toch ook te moeten kunnen.

Alvast bedankt,
Bauke