Hallo nochmal,
so richtig komme ich noch nicht weiter. Vielleicht könnt Ihr mich ja nochmal in die richtige Richtung schubsen
Ich möchte mir einen sauberen Programmierstil angewöhnen und deshalb GUI von der Logik trennen.
Es gelingt mir trotzdem noch nicht, von ausserhalb der GUI- Klasse auf die Elemente dieser GUI- Klasse zuzugreifen.
Als Beispiel habe ich eine Klasse "Window" für die GUI, ein mit dem Qt-Creator erzeugtes ui- File,
und eine Datei MeineExternenFunktionen.py
Enthalten sind drei LineEdits und zwei Buttons. In die LineEdits gebe ich zwei ganze Zahlen ein, durch Klick auf den Button
erfolgt die Addition und die Ausgabe der Summe im dritten LineEdit.
Führe ich die Addition innerhalb der GUI- Klasse "Window" aus, klappt alles.
Führe ich die Addition ausserhalb der der GUI- Klasse "Window", also im Modul MeineExternenFunktionen, aus,
- wo ich sie eigentlich haben möchte- bekomme ich Fehlermeldungen.
Mein Problem ist, daß ich nicht weiß, wie ich das LineEdit- Widget in der Klasse "Window" ansprechen soll.
Vielleicht habt Ihr ja einen Tip für mich?
Phillip
PS: Hat jetzt nichts mehr direkt mit tkinter zu tun, ich wollte aber keinen zweiten Thread dazu aufmachen
Mein "Hauptprogramm":
Code: Alles auswählen
import sys, os
from PyQt5 import QtGui, QtCore, QtWidgets, uic
import MeineExternenFunktionen
DIRPATH = os.path.join(os.path.dirname(os.path.abspath(__file__)))
class Window(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
uic.loadUi(os.path.join(DIRPATH, 'oberflaeche.ui'), self)
self.btSummeIntern.clicked.connect(self.summe_intern)
self.btSummeExtern.clicked.connect(MeineExternenFunktionen.summe_extern)
def summe_intern(self):
SummandEins=self.leSummandEins.text()
SummandZwei=self.leSummandZwei.text()
Summe=str(int(SummandEins)+int(SummandZwei))
self.leSumme.setText(Summe)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
=========================================================================================================
Meine Datei MeineExternenFunktionen.py:
Code: Alles auswählen
import sys, os
def summe_extern(self):
SummandEins=self.leSummandEins.text()
SummandZwei=self.leSummandZwei.text()
Summe=str(int(SummandEins)+int(SummandZwei))
self.leSumme.setText(Summe)
=========================================================================================================
... und mein ui- File oberflaeche.ui:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Window</class>
<widget class="QWidget" name="Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>791</width>
<height>179</height>
</rect>
</property>
<property name="windowTitle">
<string>Hello World</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Tab 1</string>
</attribute>
<widget class="QLabel" name="lbLabel">
<property name="geometry">
<rect>
<x>90</x>
<y>180</y>
<width>451</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="btTestIntern">
<property name="geometry">
<rect>
<x>560</x>
<y>170</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Test Intern</string>
</property>
</widget>
<widget class="QPushButton" name="btTestExtern">
<property name="geometry">
<rect>
<x>560</x>
<y>200</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Test extern</string>
</property>
</widget>
<widget class="QLineEdit" name="leSummandEins">
<property name="geometry">
<rect>
<x>30</x>
<y>40</y>
<width>113</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="leSummandZwei">
<property name="geometry">
<rect>
<x>170</x>
<y>40</y>
<width>113</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="leSumme">
<property name="geometry">
<rect>
<x>310</x>
<y>40</y>
<width>113</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>30</x>
<y>70</y>
<width>47</width>
<height>13</height>
</rect>
</property>
<property name="text">
<string>Summand</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>170</x>
<y>70</y>
<width>47</width>
<height>13</height>
</rect>
</property>
<property name="text">
<string>Summand</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>310</x>
<y>70</y>
<width>47</width>
<height>13</height>
</rect>
</property>
<property name="text">
<string>Summe</string>
</property>
</widget>
<widget class="QPushButton" name="btSummeIntern">
<property name="geometry">
<rect>
<x>460</x>
<y>32</y>
<width>91</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Summe intern</string>
</property>
</widget>
<widget class="QPushButton" name="btSummeExtern">
<property name="geometry">
<rect>
<x>460</x>
<y>70</y>
<width>91</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Summe extern</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>