• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak z poziomu klasy odwołać się do elementów GUI

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
738 wizyt
pytanie zadane 4 kwietnia 2020 w Python przez manjaro Nałogowiec (37,390 p.)
edycja 5 kwietnia 2020 przez manjaro
Mam program główny w którym jest całe GUI. Jest button który wywołuje funkcję w klasie którą importuję w głównym programie. Jak teraz przekazać wyniki tej funkcji z powrotem do GUI w głównym programie?

Albo może podam taki prosty przykład o co mi chodzi. Mam plik A, w którym jest proste GUI, jeden button i jeden label. I jest drugi plik B który zawiera klasę samochód i metodę jedz(). Chcę wywołać tę metodę poprzez naciśnięcie buttona i chcę aby samochód po jakimś czasie, kiedy przyjedzie na miejsce, napisał na labelu "dojechałem do mety".

1 odpowiedź

+1 głos
odpowiedź 5 kwietnia 2020 przez DawidK Nałogowiec (37,910 p.)

To co mi przychodzi do głowy, ale nie wiem czy jest zgodne z praktykami.

- klasa Car z metodą przyjmującą jako parametr label do zmiany.

- w window dziedziczenie po Qdialog i Car żeby mieć dostęp do metody

- button z przypisaną funkcją anonimową dzięki temu można odpalić funkcje z parametrem (funkcja jako parametr przyjmuje label do zmiany)

from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel, QPushButton
import sys

class Car:
    def showStopInLabel(self,label):
        label.setText('dojechalem do mety')

class Window(QDialog,Car):
    def __init__(self):
        super().__init__()
        self.title = "Jazda"
        self.top = 200
        self.left = 500
        self.width = 400
        self.height = 300
        self.InitWindow()
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

    def InitWindow(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        Main_Layout = QVBoxLayout()

        self.label = QLabel('samochód stoi')
        Main_Layout.addWidget(self.label)

        driveButton = QPushButton('jedz')
        driveButton.clicked.connect(lambda: self.showStopInLabel(self.label))
        Main_Layout.addWidget(driveButton)

        self.setLayout(Main_Layout)
        self.show()

app = QApplication(sys.argv)
w = Window()
sys.exit(app.exec_())

 

Podobne pytania

0 głosów
2 odpowiedzi 323 wizyt
pytanie zadane 15 kwietnia 2020 w Python przez manjaro Nałogowiec (37,390 p.)
0 głosów
0 odpowiedzi 532 wizyt
0 głosów
1 odpowiedź 985 wizyt
pytanie zadane 17 lutego 2018 w PHP przez Przemysław Obywatel (1,510 p.)

93,434 zapytań

142,429 odpowiedzi

322,662 komentarzy

62,798 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...