QWidget innerhalb GUI

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
agressor
User
Beiträge: 9
Registriert: Donnerstag 1. September 2011, 05:23

Moin

schon wieder eine Frage meinerseits. Ich habe eine bestehende GUI in der ein Widget definiert ist.
ich versuche nun in diese widget zu zeichen. mit der erschaffung eines neuen fensters funktioniert das alles schon ganz gut.

Code: Alles auswählen

class MeinWidget(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.pen = QtGui.QPen(QtGui.QColor(0,0,0))
        self.pen.setWidth(3)
        self.brush = QtGui.QBrush(QtGui.QColor(255,0,0))
        
    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        painter.setPen(self.pen)
        painter.setBrush(self.brush)
        painter.drawRect(10,10,100,100)
wie kann ich diese ausgabe jetzt auch auf das widget in der GUI leiten
lunar

@agressor: Gar nicht. Du kannst nicht in einem Widget auf ein beliebiges anderes Widget zeichnen. In Deiner GUI muss Du auch "MeinWidget" verwenden, wenn Du dort mithilfe von "MeinWidget" zeichnen möchtest.
agressor
User
Beiträge: 9
Registriert: Donnerstag 1. September 2011, 05:23

das is schon klar, dass ich das mir dem geposteten Codefragment nich machen kann.

GUI:

Code: Alles auswählen

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(698, 532)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.B_Verbinden = QtGui.QPushButton(self.centralwidget)
        self.B_Verbinden.setGeometry(QtCore.QRect(200, 40, 151, 41))
        self.B_Verbinden.setObjectName(_fromUtf8("B_Verbinden"))
        self.frame = QtGui.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(10, 40, 181, 181))
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Sunken)
        self.frame.setLineWidth(2)
        self.frame.setObjectName(_fromUtf8("frame"))
#########################################################        
        self.W_Anzeige = QtGui.QWidget(self.frame)
        self.W_Anzeige.setGeometry(QtCore.QRect(10, 10, 161, 161))
########################################################
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 192))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 192))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 192))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 192))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 192))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 192))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush)
############################################################
        self.W_Anzeige.setPalette(palette)
        self.W_Anzeige.setCursor(QtCore.Qt.CrossCursor)
        self.W_Anzeige.setAutoFillBackground(True)
        self.W_Anzeige.setObjectName(_fromUtf8("W_Anzeige"))
############################################################        
        self.B_Trennen = QtGui.QPushButton(self.centralwidget)
        self.B_Trennen.setGeometry(QtCore.QRect(200, 180, 151, 41))
        self.B_Trennen.setObjectName(_fromUtf8("B_Trennen"))
        self.B_Werte = QtGui.QGroupBox(self.centralwidget)
        self.B_Werte.setGeometry(QtCore.QRect(10, 230, 341, 261))
        font = QtGui.QFont()
        self.B_Werte.setFont(font)
        self.B_Werte.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.B_Werte.setObjectName(_fromUtf8("B_Werte"))
        self.B_Enable = QtGui.QGroupBox(self.B_Werte)
        self.B_Enable.setGeometry(QtCore.QRect(10, 20, 321, 51))
        self.B_Enable.setObjectName(_fromUtf8("B_Enable"))
        self.C_XAchse = QtGui.QCheckBox(self.B_Enable)
        self.C_XAchse.setGeometry(QtCore.QRect(10, 20, 91, 23))
        self.C_XAchse.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.C_XAchse.setChecked(True)
        self.C_XAchse.setObjectName(_fromUtf8("C_XAchse"))
        self.C_YAchse = QtGui.QCheckBox(self.B_Enable)
        self.C_YAchse.setGeometry(QtCore.QRect(120, 20, 91, 23))
        self.C_YAchse.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.C_YAchse.setChecked(True)
        self.C_YAchse.setObjectName(_fromUtf8("C_YAchse"))
        self.C_ZAchse = QtGui.QCheckBox(self.B_Enable)
        self.C_ZAchse.setGeometry(QtCore.QRect(230, 20, 91, 23))
        self.C_ZAchse.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.C_ZAchse.setChecked(True)
        self.C_ZAchse.setObjectName(_fromUtf8("C_ZAchse"))
        self.S_G_XAchse = QtGui.QSlider(self.B_Werte)
        self.S_G_XAchse.setGeometry(QtCore.QRect(6, 80, 20, 171))
        self.S_G_XAchse.setMinimum(-1000)
        self.S_G_XAchse.setMaximum(1000)
        self.S_G_XAchse.setOrientation(QtCore.Qt.Vertical)
        self.S_G_XAchse.setTickPosition(QtGui.QSlider.TicksBelow)
        self.S_G_XAchse.setTickInterval(100)
        self.S_G_XAchse.setObjectName(_fromUtf8("S_G_XAchse"))
        self.S_G_YAchse = QtGui.QSlider(self.B_Werte)
        self.S_G_YAchse.setGeometry(QtCore.QRect(116, 80, 20, 171))
        self.S_G_YAchse.setAutoFillBackground(False)
        self.S_G_YAchse.setMinimum(-1000)
        self.S_G_YAchse.setMaximum(1000)
        self.S_G_YAchse.setOrientation(QtCore.Qt.Vertical)
        self.S_G_YAchse.setTickPosition(QtGui.QSlider.TicksBelow)
        self.S_G_YAchse.setTickInterval(100)
        self.S_G_YAchse.setObjectName(_fromUtf8("S_G_YAchse"))
        self.S_G_ZAchse = QtGui.QSlider(self.B_Werte)
        self.S_G_ZAchse.setGeometry(QtCore.QRect(226, 80, 20, 171))
        self.S_G_ZAchse.setMinimum(-1000)
        self.S_G_ZAchse.setMaximum(1000)
        self.S_G_ZAchse.setTracking(True)
        self.S_G_ZAchse.setOrientation(QtCore.Qt.Vertical)
        self.S_G_ZAchse.setInvertedAppearance(False)
        self.S_G_ZAchse.setInvertedControls(False)
        self.S_G_ZAchse.setTickPosition(QtGui.QSlider.TicksBelow)
        self.S_G_ZAchse.setTickInterval(100)
        self.S_G_ZAchse.setObjectName(_fromUtf8("S_G_ZAchse"))
        self.E_ZAchse = QtGui.QLineEdit(self.B_Werte)
        self.E_ZAchse.setGeometry(QtCore.QRect(270, 150, 61, 27))
        self.E_ZAchse.setAlignment(QtCore.Qt.AlignCenter)
        self.E_ZAchse.setReadOnly(True)
        self.E_ZAchse.setObjectName(_fromUtf8("E_ZAchse"))
        self.E_YAchse = QtGui.QLineEdit(self.B_Werte)
        self.E_YAchse.setGeometry(QtCore.QRect(160, 150, 61, 27))
        self.E_YAchse.setAlignment(QtCore.Qt.AlignCenter)
        self.E_YAchse.setReadOnly(True)
        self.E_YAchse.setObjectName(_fromUtf8("E_YAchse"))
        self.E_XAchse = QtGui.QLineEdit(self.B_Werte)
        self.E_XAchse.setGeometry(QtCore.QRect(50, 150, 61, 27))
        self.E_XAchse.setAlignment(QtCore.Qt.AlignCenter)
        self.E_XAchse.setReadOnly(True)
        self.E_XAchse.setObjectName(_fromUtf8("E_XAchse"))
        self.S_F_XAchse = QtGui.QSlider(self.B_Werte)
        self.S_F_XAchse.setGeometry(QtCore.QRect(30, 80, 21, 171))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Highlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(208, 204, 173))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Highlight, brush)
        self.S_F_XAchse.setPalette(palette)
        self.S_F_XAchse.setMinimum(-200)
        self.S_F_XAchse.setMaximum(200)
        self.S_F_XAchse.setOrientation(QtCore.Qt.Vertical)
        self.S_F_XAchse.setTickPosition(QtGui.QSlider.TicksBelow)
        self.S_F_XAchse.setTickInterval(100)
        self.S_F_XAchse.setObjectName(_fromUtf8("S_F_XAchse"))
        self.S_F_YAchse = QtGui.QSlider(self.B_Werte)
        self.S_F_YAchse.setGeometry(QtCore.QRect(140, 80, 21, 171))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Highlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(208, 204, 173))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Highlight, brush)
        self.S_F_YAchse.setPalette(palette)
        self.S_F_YAchse.setMinimum(-200)
        self.S_F_YAchse.setMaximum(200)
        self.S_F_YAchse.setOrientation(QtCore.Qt.Vertical)
        self.S_F_YAchse.setTickPosition(QtGui.QSlider.TicksBelow)
        self.S_F_YAchse.setTickInterval(100)
        self.S_F_YAchse.setObjectName(_fromUtf8("S_F_YAchse"))
        self.S_F_ZAchse = QtGui.QSlider(self.B_Werte)
        self.S_F_ZAchse.setGeometry(QtCore.QRect(250, 80, 21, 171))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Highlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(208, 204, 173))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Highlight, brush)
        self.S_F_ZAchse.setPalette(palette)
        self.S_F_ZAchse.setMinimum(-200)
        self.S_F_ZAchse.setMaximum(200)
        self.S_F_ZAchse.setOrientation(QtCore.Qt.Vertical)
        self.S_F_ZAchse.setTickPosition(QtGui.QSlider.TicksBelow)
        self.S_F_ZAchse.setTickInterval(100)
        self.S_F_ZAchse.setObjectName(_fromUtf8("S_F_ZAchse"))
        self.B_RS232 = QtGui.QGroupBox(self.centralwidget)
        self.B_RS232.setGeometry(QtCore.QRect(360, 30, 341, 461))
        self.B_RS232.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.B_RS232.setObjectName(_fromUtf8("B_RS232"))
        self.EB_Terminal = QtGui.QTextEdit(self.B_RS232)
        self.EB_Terminal.setGeometry(QtCore.QRect(10, 20, 321, 431))
        self.EB_Terminal.setReadOnly(True)
        self.EB_Terminal.setObjectName(_fromUtf8("EB_Terminal"))
        self.B_Start = QtGui.QPushButton(self.centralwidget)
        self.B_Start.setGeometry(QtCore.QRect(200, 140, 151, 41))
        self.B_Start.setCheckable(False)
        self.B_Start.setFlat(False)
        self.B_Start.setObjectName(_fromUtf8("B_Start"))
        self.frame_2 = QtGui.QFrame(self.centralwidget)
        self.frame_2.setGeometry(QtCore.QRect(200, 80, 151, 61))
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Sunken)
        self.frame_2.setObjectName(_fromUtf8("frame_2"))
############################################################        
        self.W_Status = QtGui.QWidget(self.frame_2)
        self.W_Status.setGeometry(QtCore.QRect(10, 10, 131, 41))
        self.W_Status.setObjectName(_fromUtf8("W_Status"))
############################################################
#        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 698, 25))
        self.menubar.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.menubar.setObjectName(_fromUtf8("menubar"))
        self.menuBeenden = QtGui.QMenu(self.menubar)
        self.menuBeenden.setObjectName(_fromUtf8("menuBeenden"))
#        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
 #       MainWindow.setStatusBar(self.statusbar)
        self.menubar.addAction(self.menuBeenden.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.B_Verbinden.setText(QtGui.QApplication.translate("MainWindow", "Verbinden", None, QtGui.QApplication.UnicodeUTF8))
        self.B_Trennen.setText(QtGui.QApplication.translate("MainWindow", "Trennen", None, QtGui.QApplication.UnicodeUTF8))
        self.B_Werte.setTitle(QtGui.QApplication.translate("MainWindow", "Aktuelle Werte", None, QtGui.QApplication.UnicodeUTF8))
        self.B_Enable.setTitle(QtGui.QApplication.translate("MainWindow", "Enable", None, QtGui.QApplication.UnicodeUTF8))
        self.C_XAchse.setText(QtGui.QApplication.translate("MainWindow", "x-Achse", None, QtGui.QApplication.UnicodeUTF8))
        self.C_YAchse.setText(QtGui.QApplication.translate("MainWindow", "y-Achse", None, QtGui.QApplication.UnicodeUTF8))
        self.C_ZAchse.setText(QtGui.QApplication.translate("MainWindow", "z-Achse", None, QtGui.QApplication.UnicodeUTF8))
        self.E_ZAchse.setPlaceholderText(QtGui.QApplication.translate("MainWindow", "0", None, QtGui.QApplication.UnicodeUTF8))
        self.E_YAchse.setPlaceholderText(QtGui.QApplication.translate("MainWindow", "0", None, QtGui.QApplication.UnicodeUTF8))
        self.E_XAchse.setPlaceholderText(QtGui.QApplication.translate("MainWindow", "0", None, QtGui.QApplication.UnicodeUTF8))
        self.B_RS232.setTitle(QtGui.QApplication.translate("MainWindow", "RS232 Terminal Viewer", None, QtGui.QApplication.UnicodeUTF8))
        self.B_Start.setText(QtGui.QApplication.translate("MainWindow", "Start", None, QtGui.QApplication.UnicodeUTF8))
        self.menuBeenden.setTitle(QtGui.QApplication.translate("MainWindow", "Beenden", None, QtGui.QApplication.UnicodeUTF8))

Programm:

Code: Alles auswählen

import sys 
import re
from PyQt4 import QtGui 
from PyQt4 import QtCore
from gmetertest import Ui_MainWindow as Dlg
from Boarddummy import Ui_MainWindow as Dlg2

class MeinDummy(QtGui.QDialog, Dlg2): 
    def __init__(self): 
        QtGui.QDialog.__init__(self) 
        self.setupUi(self)
        self.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.onSenden)
    
    def onSenden(self):
        print "Senden"
        valueX = self.DummysliderX.value()
        valueY = self.DummysliderY.value()
        valueZ = self.DummysliderZ.value()
        sendString = "S:_X" + str(float(valueX)/100) + "_Y" + str(float(valueY)/100) + "_Z" + str(float(valueZ)/100)
        dialog.Event(sendString)

 

class MeinDialog(QtGui.QDialog, Dlg): 
    def __init__(self): 
        QtGui.QDialog.__init__(self) 
        self.setupUi(self)
#Slots
        self.connect(self.menuBeenden, QtCore.SIGNAL("clicked()"), self.onQuit) 
        self.connect(self.B_Trennen, QtCore.SIGNAL("clicked()"), self.onTrennen) 
        self.connect(self.B_Verbinden, QtCore.SIGNAL("clicked()"), self.onVerbinden)
        self.connect(self.B_Start, QtCore.SIGNAL("clicked()"), self.onStart)
        
       
    def onQuit(self): 
#         Methode zum Fensterschliessen  
        self.E_XAchse.setText("Schuess")
        self.close()
        
    def onVerbinden(self):
        self.Dummydialog = MeinDummy()
        self.Dummydialog.show()
        print "Verbinden"
        
    def onTrennen(self):
        self.E_XAchse.setText("Test")
        value_xachsefine = self.S_F_XAchse.value()
        self.E_YAchse.setText(str(value_xachsefine))
        self.S_F_ZAchse.setValue(100)
    
    def on_ySlider_change(self):
        value = self.S_G_YAchse.value()
        valuecut = value
        if value > 200: valuecut = 200
        if value < -200: valuecut = -200
        self.S_F_YAchse.setValue(valuecut)
        self.E_YAchse.setText(str(value))
        
    def on_Call(self, values):
        self.E_XAchse.setText("Weg2")
        self.S_F_XAchse.setValue(int(values))

    def Event(self, recString):
        print recString   
        Incoming = recString.split("_")
        print Incoming[0]
        print Incoming[1]
        print Incoming[2]
        print Incoming[3]
        wertX = float(Incoming[1].strip("X"))*100
        wertY = float(Incoming[2].strip("Y"))*100
        wertZ = float(Incoming[3].strip("Z"))*100
        self.AchseAnzeige(wertX,wertY,wertZ)
        self.AusgabeKonsole(recString)
    
    def AchseAnzeige(self, wertX, wertY, wertZ):
        if self.C_XAchse.checkState():
            self.S_F_XAchse.setValue(wertX)
            self.S_G_XAchse.setValue(wertX)
            self.E_XAchse.setText(str(wertX/100))
        if self.C_YAchse.checkState():
            self.S_F_YAchse.setValue(wertY)
            self.S_G_YAchse.setValue(wertY)
            self.E_YAchse.setText(str(wertY/100))
        if self.C_ZAchse.checkState():
            self.S_F_ZAchse.setValue(wertZ)
            self.S_G_ZAchse.setValue(wertZ)
            self.E_ZAchse.setText(str(wertZ/100))
    
    def onStart(self):
        print "Start"
#      ins widget zeichnen

    def AusgabeKonsole(self, recString):
        temptext = self.EB_Terminal.toPlainText()
        temptext = recString + "\n" + temptext
        self.EB_Terminal.setText(temptext)
      
app = QtGui.QApplication(sys.argv) 
dialog = MeinDialog() 
dialog.show() 
print "test"

sys.exit(app.exec_())
Das is der Stand des Programms bisher.

Ich möchte auf den widgets "W_Anzeige" und "W_Status" arbeiten. (ich habe versucht diese in der oberen Source mit "#"-Zeilen zu markieren.
Was ich nicht hinkriege ist, den Code aus meinem ersten Post auf einem der beiden Widgets auszugeben. wie müsste die funktion dafür aussehen.

ich habe mit Python insgesamt nur sehr wenig erfahrung. das letzte mal habe ich vor 10 Jahren mit einer GUI gearbeitet. Damals schien das ausgewben von selbstgenerierten Grafiken irgendwie leichter zu sein.
lunar

@agressor: Den generierten Quelltext muss ich nicht sehen. Den solltest Du auch nie sehen, geschweige denn bearbeiten. Im Allgemeinen ist es in Python empfehlenswert, die Oberfläche mittels "PyQt4.uic.loadUi()" dynamisch zu laden. Das nur nebenbei.

Zum Problem: Du darfst für "W_Anzeige" und "W_Status" selbst gezeichnete Widgets nutzen möchtest, dann darfst Du eben nicht "QWidget" nutzen, sondern muss stattdessen Deine eigene Klasse nutzen. Im Designer geht das über "benutzerdefinierte Widgets", mit denen Du dem Designer Deine eigenen Widget-Klassen unterschieben kannst.

Noch ein paar weitere Anmerkungen:
  • Layouts statt absoluter Positions- und Größenangaben: Ansonsten funktioniert die Oberfläche nur mit Deinen Einstellungen und wird fehlerhaft dargestellt, sobald jemand eine andere Schriftart, eine andere Schriftgröße oder auch nur eine andere Bildschirmauflösung nutzt.
  • Neue Signal-Slot-API: Statt "self.connect(self.menuBeenden, QtCore.SIGNAL('clicked()'), self.onQuit())" "self.menuBeenden.clicked.connect(self.onQuit)".
  • Beachte PEP 8 im Bezug auf die Namensgebung.
  • Kein Quelltext auf Modulebene. Der Zugriff auf "dialog" in "MeinDummy.onSenden()" ist unelegant, weil "dialog" letztlich nur mehr oder weniger zufällig im Namensraum vorhanden ist. Allgemein ist "dialog.Event()" unschön, nutze Signale und Slots zur Kommunikation zwischen verschiedenen Fenstern.
  • Python ist nicht Tcl, und hat richtige Datentypen wie Listen, Tupel und Klassen, also verwende sie auch. In ".onSenden()" eine Zeichenkette zusammenzubauen, nur um sie in ".Event()" wieder auseinander zu nehmen, ist überflüssig. Wieso nicht einfach ein Tupel mit drei Komponenten?
Falls es – wie die Namensgebung vermuten lässt – um das Zeichnen von Graphen geht, dann schaue Dir mal PyQwt und/oder matplotlib an. Ersteres bietet fertige Widgets für Graphen, letzteres ist ganz auf das Plotten zugeschnitten.

Zum Thema "früher war es irgendwie leichter": Alles ist schwer, wenn man die Dokumentation nicht liest. Und das Zeichnen in Widgets ist in der Qt-Dokumentation ausführlich erklärt.
Antworten