[Python3.x][PyQT5]Skróty klawiszowe i ikonka programu

Odpowiedz Nowy wątek
2019-08-06 10:20
0

Witam forumowicze,

Moje początki z Pythonem są lekko burzliwe i nie mogę dojść do ładu i składu.
1. W python 3.7.4 Shell ikonka programu pojawia się, a w Visual studio code nie dlaczego? Nie wiedzieć czemu w VS wszystkie from mam podkreślone na czerwono mimo iż zainstalowałem i uruchamiam program, nawet podpowiedzi działają.
2. Chce skorzystać ze skrótów klawiszowych , Escape i Key_CapsLock działają, pozostałe nie QtGui podkreślone na czerwono.

Z góry dziękuję za pomoc.

import serial

from PyQt5.QtWidgets import QApplication, QWidget
#from PyQt5 import QtGui 
#from PyQt5.QtGui import QIcon, QKeySequence
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QLabel, QGridLayout
from PyQt5.QtWidgets import QLineEdit, QPushButton, QHBoxLayout
from PyQt5.QtWidgets import QMessageBox, QShortcut
from PyQt5.QtCore import Qt

class Kalkulator(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.interfejs()
        '''self.terminal_()

    def interfejs(self):    
        ser = serial.Serial("COM1", 115200)
        while True:
        cc=str(ser.readline().decode('ascii'))
        print(cc)'''

    def interfejs(self):

        # etykiety
        etykieta1 = QLabel("Liczba 1:", self)
        etykieta2 = QLabel("Liczba 2:", self)
        etykieta3 = QLabel("Wynik:", self)

        # przypisanie widgetów do układu tabelarycznego
        ukladT = QGridLayout()
        ukladT.addWidget(etykieta1, 0, 0)
        ukladT.addWidget(etykieta2, 0, 1)
        ukladT.addWidget(etykieta3, 0, 2)

        # 1-liniowe pola edycyjne
        self.liczba1Edt = QLineEdit()
        self.liczba2Edt = QLineEdit()
        self.wynikEdt = QLineEdit()

        self.wynikEdt.readonly = True
        self.wynikEdt.setToolTip('Wpisz <b>liczby</b> i wybierz działanie...')

        ukladT.addWidget(self.liczba1Edt, 1, 0)
        ukladT.addWidget(self.liczba2Edt, 1, 1)
        ukladT.addWidget(self.wynikEdt, 1, 2)

        # przyciski
        dodajBtn = QPushButton("&Dodaj", self)
        odejmijBtn = QPushButton("&Odejmij", self)
        dzielBtn = QPushButton("&Mnóż", self)
        mnozBtn = QPushButton("D&ziel", self)
        koniecBtn = QPushButton("&Koniec", self)
        koniecBtn.resize(koniecBtn.sizeHint())

        ukladH = QHBoxLayout()
        ukladH.addWidget(dodajBtn)
        ukladH.addWidget(odejmijBtn)
        ukladH.addWidget(dzielBtn)
        ukladH.addWidget(mnozBtn)

        ukladT.addLayout(ukladH, 2, 0, 1, 3)
        ukladT.addWidget(koniecBtn, 3, 0, 1, 3)

        # przypisanie utworzonego układu do okna
        self.setLayout(ukladT)
        koniecBtn.clicked.connect(self.koniec)
        dodajBtn.clicked.connect(self.dzialanie)
        odejmijBtn.clicked.connect(self.dzialanie)
        mnozBtn.clicked.connect(self.dzialanie)
        dzielBtn.clicked.connect(self.dzialanie)

        self.setGeometry(800, 400, 300, 100)
        self.setWindowIcon(QIcon('kalkulator.png'))
        self.setWindowTitle("Terminal PyQT5")
        self.show()

    def koniec(self):
        self.close()

    def closeEvent(self, event):

        odp = QMessageBox.question(
            self, 'Komunikat',
            "Czy na pewno koniec?",
            QMessageBox.Yes | QMessageBox.No, QMessageBox.No)

        if odp == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

    def keyPressEvent(self, event):
        k = event.key()
        m = int(event.modifiers())
        if k == Qt.Key_Escape:
            self.koniec()
        elif k == Qt.Key_CapsLock:
            self.koniec()
        elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+N'):
            self.koniec()
        elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+P'):
            self.koniec()
        elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+R'):
            self.koniec()
        elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+Q'):
            self.koniec()
        else:
            event.ignore() 

    def dzialanie(self):

        nadawca = self.sender()
        try:
            liczba1 = float(self.liczba1Edt.text())
            liczba2 = float(self.liczba2Edt.text())
            wynik = ""

            if nadawca.text() == "&Dodaj":
                    wynik = liczba1 + liczba2
            elif nadawca.text() == "&Odejmij":
                wynik = liczba1 - liczba2
            elif nadawca.text() == "&Mnóż":
                wynik = liczba1 * liczba2
            else:  # dzielenie
                try:
                    wynik = round(liczba1 / liczba2, 9)
                except ZeroDivisionError:
                    QMessageBox.critical(
                        self, "Błąd", "Nie można dzielić przez zero!")
                    return

            self.wynikEdt.setText(str(wynik))

        except ValueError:
            QMessageBox.warning(self, "Błąd", "Błędne dane", QMessageBox.Ok)

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    okno = Kalkulator()
    sys.exit(app.exec_())
edytowany 1x, ostatnio: cerrato, 2019-08-06 11:08
Zostaw VS i Zainstaluj PyCharm. - lion137 2019-08-06 10:39

Pozostało 580 znaków

2019-08-07 15:42
0

W PyCharmie taki problem rozwiazuje sie w ten sposob, ze sie zaznacza foldery jako source, nie wiem czy w VSC jest taka opcja, ale powinienes i tak zaciagnac PyCharma.

Pozostało 580 znaków

2019-08-08 08:37
0

W VSCode instalujesz wtyczkę Python od Microsoftu. Następnie tworzysz plik z roszerzeniem *.py i już powinno śmigać. Jeżeli nie, upewniasz się, że na dolnej belce po prawej stronie masz Python. Poza tym:

  1. Otwierasz komendy (Ctrl + Shift + P).
  2. Wpisujesz "Python: Build Workspace Symbols" i wybierasz.
  3. Gotowe.

Wiedza to potęga

Pozostało 580 znaków

2019-08-12 12:54
0
Haskell napisał(a):

W VSCode instalujesz wtyczkę Python od Microsoftu. Następnie tworzysz plik z roszerzeniem *.py i już powinno śmigać. Jeżeli nie, upewniasz się, że na dolnej belce po prawej stronie masz Python. Poza tym:

  1. Otwierasz komendy (Ctrl + Shift + P).
  2. Wpisujesz "Python: Build Workspace Symbols" i wybierasz.
  3. Gotowe.

hej, dzięki, że ktoś się w końcu odezwał.
Oczywiście mam zainstalowany dodatek Python(ms-python.python)
W prawym dolnym rogu mam Python, we właściwościach jest auto detect.
Mam plik z pytonem.
Mam zainstalowaną bibliotekę pyQt5.
Masz może jakieś inne sugestie?

Pozostało 580 znaków

2019-08-12 13:38
0

Co ciekawe program normalnie się odpala mimo iż sypie błędami chyba wszystkich bibilotek:
No name 'QApplication' in module 'PyQt5.QtWidgets'
No name 'QWidget' in module 'PyQt5.QtWidgets'
No name 'QLabel' in module 'PyQt5.QtWidgets'
No name 'QGridLayout' in module 'PyQt5.QtWidgets'
No name 'QLineEdit' in module 'PyQt5.QtWidgets'
No name 'QPushButton' in module 'PyQt5.QtWidgets'
No name 'QHBoxLayout' in module 'PyQt5.QtWidgets'
No name 'QMessageBox' in module 'PyQt5.QtWidgets'
No name 'QShortcut' in module 'PyQt5.QtWidgets'
No name 'Qt' in module 'PyQt5.QtCore'

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0