Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QT designer и python



  • Почему программа на работает?

    #Изначально подключаются необходимые библиотеки
    #from graphics import *
    from PyQt5 import QtCore, QtGui, QtWidgets
    import sys
    from Shift import Ui_Form
    if __name__ == "__main__":\
        app = QtWidgets.QApplication(sys.argv)
    
    #Следующий код отвечает за открытие интерфейса
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    
    #Процедура замены символов методом "Атбаш"
    
    def shift():
        intab = 'абвгдежзийклмнопрстуфхцчшщъыьэюя АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
        outtab = 'яюэьыъщшчцхфутсрпонмлкйизжедгвба5ЯЭЮЬЫЪЩШЧЦХФУТСРПОНМЛКЙИЗЖЕДГВБА'
    
        ui.pushButton_3.close()
        trans = ui.lineEdit.text()
    
        ui.lineEdit_2.setText(trans.translate(str.maketrans(intab, outtab)))
    
        ui.pushButton.clicked.connect(shift)
    
    
    #Выход из приложения
    sys.exit(app.exec_())
    # Так как программа закрывается сразу же после ее запуска, то пришлось оставить строчку для ввода
    input(" Нажмите для выхода ... ")
    
    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file 'C:\python\Lib\site-packages\PySide2\Shifr.ui'
    #
    # Created by: PyQt5 UI code generator 5.14.2
    #
    # WARNING! All changes made in this file will be lost!
    
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    
    class Ui_Form(object):
        def setupUi(self, Form):
            Form.setObjectName("Form")
            Form.resize(618, 538)
            Form.setStyleSheet("background-color: rgb(243, 239, 255);")
            self.lineEdit = QtWidgets.QLineEdit(Form)
            self.lineEdit.setGeometry(QtCore.QRect(0, 50, 621, 121))
            self.lineEdit.setLayoutDirection(QtCore.Qt.LeftToRight)
            self.lineEdit.setStyleSheet("QLineEdit:hover{\n"
    "    background-color:white;\n"
    "}")
            self.lineEdit.setText("")
            self.lineEdit.setCursorPosition(0)
            self.lineEdit.setAlignment(QtCore.Qt.AlignCenter)
            self.lineEdit.setDragEnabled(False)
            self.lineEdit.setReadOnly(False)
            self.lineEdit.setObjectName("lineEdit")
            self.lineEdit_2 = QtWidgets.QLineEdit(Form)
            self.lineEdit_2.setGeometry(QtCore.QRect(0, 330, 621, 131))
            self.lineEdit_2.setStyleSheet("QLineEdit:hover{\n"
    "    background-color:white;\n"
    "}")
            self.lineEdit_2.setText("")
            self.lineEdit_2.setCursorPosition(0)
            self.lineEdit_2.setAlignment(QtCore.Qt.AlignCenter)
            self.lineEdit_2.setObjectName("lineEdit_2")
            self.label = QtWidgets.QLabel(Form)
            self.label.setGeometry(QtCore.QRect(250, 9, 131, 31))
            self.label.setStyleSheet("QLabel:hover {\n"
    "    font: 14pt \"Segoe Print\";\n"
    "    color:red;\n"
    "}")
            self.label.setObjectName("label")
            self.label_2 = QtWidgets.QLabel(Form)
            self.label_2.setGeometry(QtCore.QRect(200, 280, 241, 31))
            self.label_2.setStyleSheet("QLabel:hover{\n"
    "    color: red;\n"
    "}")
            self.label_2.setObjectName("label_2")
            self.pushButton = QtWidgets.QPushButton(Form)
            self.pushButton.setGeometry(QtCore.QRect(230, 200, 171, 61))
            self.pushButton.setStyleSheet("QPushButton {\n"
    "    background-color:grey;\n"
    "    border:none;\n"
    "    color:white;\n"
    "    font-size: 20px;\n"
    "    font-weight:bold;\n"
    "}\n"
    "QPushButton:hover{\n"
    "    background-color:white;\n"
    "    color:black;\n"
    "}")
            self.pushButton.setAutoRepeat(False)
            self.pushButton.setAutoExclusive(False)
            self.pushButton.setAutoDefault(False)
            self.pushButton.setDefault(False)
            self.pushButton.setFlat(False)
            self.pushButton.setObjectName("pushButton")
            self.pushButton_2 = QtWidgets.QPushButton(Form)
            self.pushButton_2.setGeometry(QtCore.QRect(0, 200, 181, 61))
            self.pushButton_2.setStyleSheet("QPushButton {\n"
    "    background-color:grey;\n"
    "    border:none;\n"
    "    color:white;\n"
    "    font-size: 20px;\n"
    "    font-weight:bold;\n"
    "}\n"
    "QPushButton:hover{\n"
    "    background-color:white;\n"
    "    color:black;\n"
    "}")
            self.pushButton_2.setObjectName("pushButton_2")
            self.pushButton_3 = QtWidgets.QPushButton(Form)
            self.pushButton_3.setGeometry(QtCore.QRect(380, 470, 241, 71))
            self.pushButton_3.setStyleSheet("QPushButton {\n"
    "    background-color:grey;\n"
    "    border:none;\n"
    "    color:white;\n"
    "    font-size: 20px;\n"
    "    font-weight:bold;\n"
    "}\n"
    "QPushButton:hover{\n"
    "    background-color:white;\n"
    "    color:black;\n"
    "}")
            self.pushButton_3.setObjectName("pushButton_3")
    
            self.retranslateUi(Form)
            QtCore.QMetaObject.connectSlotsByName(Form)
    
        def retranslateUi(self, Form):
            _translate = QtCore.QCoreApplication.translate
            Form.setWindowTitle(_translate("Form", "Атбаш"))
            self.label.setText(_translate("Form", "<html><head/><body><p align=\"justify\"><span style=\" font-size:14pt;\">Введите текст</span></p></body></html>"))
            self.label_2.setText(_translate("Form", "<html><head/><body><p align=\"justify\"><span style=\" font-size:14pt;\">Результат преобразования</span></p></body></html>"))
            self.pushButton.setText(_translate("Form", "Выполнить"))
            self.pushButton_2.setText(_translate("Form", "Очистить поля"))
            self.pushButton_3.setText(_translate("Form", "Закрыть программу"))
    
    
    
    
    

    Снимок.PNG


  • Qt Champions 2019

    @VOLFRAMHERO A gde

    app.exec_()
    

    ?

    https://build-system.fman.io/pyqt5-tutorial

     # The last step is to hand control over to Qt and ask it to "run the application until the user closes it". This is done via the command:
    
    app.exec_()
    


  • @jsulm Так это выход из приложенияСнимок.PNG


  • Qt Champions 2019

    @VOLFRAMHERO Your code is wrong, should be:

    from PyQt5 import QtCore, QtGui, QtWidgets
    import sys
    from Shift import Ui_Form
    
    def shift():
        intab = 'абвгдежзийклмнопрстуфхцчшщъыьэюя АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
        outtab = 'яюэьыъщшчцхфутсрпонмлкйизжедгвба5ЯЭЮЬЫЪЩШЧЦХФУТСРПОНМЛКЙИЗЖЕДГВБА'
        ui.pushButton_3.close()
        trans = ui.lineEdit.text()
        ui.lineEdit_2.setText(trans.translate(str.maketrans(intab, outtab)))
        ui.pushButton.clicked.connect(shift)
    
    if __name__ == "__main__":\
        app = QtWidgets.QApplication(sys.argv)
        #Следующий код отвечает за открытие интерфейса
        Form = QtWidgets.QWidget()
        ui = Ui_Form()
        ui.setupUi(Form)
        Form.show()
        #Выход из приложения
        sys.exit(app.exec_())
    


  • @jsulm А что изменилось? Проблема в том, что этот код работает с pysyde. А у меня сейчас PyQt5 и pyside 2


  • Qt Champions 2019

    @VOLFRAMHERO said in QT designer и python:

    А что изменилось?

    if __name__ == "__main__":\
        app = QtWidgets.QApplication(sys.argv)
        #Следующий код отвечает за открытие интерфейса
        Form = QtWidgets.QWidget()
        ui = Ui_Form()
        ui.setupUi(Form)
        Form.show()
        #Выход из приложения
        sys.exit(app.exec_())
    


  • This post is deleted!


  • @jsulm Ok. Может спросил неправильно. Программа запускается, но при нажатии на кнопки ничего не происходит???


  • Qt Champions 2019

    @VOLFRAMHERO Why don't you connect buttons ssignals to slots inside Ui_Form?
    Currently you connect inside shift() which is not called anywhere - how should it work?



  • @jsulm Если бы я знал как это сделать, то не писал на форум. Касательно подключения к слотам внутри Ui_Form. Как это сделать?


  • Qt Champions 2019

    @VOLFRAMHERO I don't understand what the problem is? It is as simple as:

    self.pushButton.clicked.connect(self.shift)
    

    And move shift() to your Ui_Form



  • @jsulm Снимок.PNG 2.PNG

    Переместить всю функцию целиком в класс Ui_Form?


  • Qt Champions 2019

    @VOLFRAMHERO said in QT designer и python:

    Переместить всю функцию целиком в класс Ui_Form?

    Yes



  • @jsulm Снимок.PNG
    Unfortunately, it doesn't work((


  • Qt Champions 2019

    @VOLFRAMHERO Did you add

    self.pushButton.clicked.connect(self.shift)
    

    to setupUi? Also, you should remove that line from shift().


  • Banned

    Okay I cannot understand what the actual issue is but I went through and created that window with what I believe are all its bells and whistles and have rendered it below. Hope this helps solve whatever the issue is/was??

    # -*- coding: utf-8 -*-
    
    #Изначально подключаются необходимые библиотеки
    from PyQt5.QtCore    import pyqtSlot, QSize
    from PyQt5.QtGui     import QFont, QColor, QPalette
    from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget
    from PyQt5.QtWidgets import QHBoxLayout, QVBoxLayout
    from PyQt5.QtWidgets import QPushButton, QLabel, QLineEdit
    
    class HeaderLabel(QLabel):
        def __init__(self, Text):
            QLabel.__init__(self)
            # -------
            self.setText(Text)
            # -------
            FontHeader = QFont()
            FontHeader.setFamily('Segoe Print')
            FontHeader.setPointSize(14)
            # -------
            self.setFont(FontHeader)
            self.setStyleSheet('QLabel:hover {color:red}')
    
    class BasicButton(QPushButton):
        def __init__(self, Text, Width):
            QPushButton.__init__(self)
            # -------
            self.setText(Text)
            # -------
            BtnSize = QSize(Width, 61)
            self.setFixedSize(BtnSize)
            # -------
            StyleValues = 'QPushButton {'
            StyleValues += 'background-color:grey; '
            StyleValues += 'border:none; '
            StyleValues += 'color:white; '
            StyleValues += ' } '
            StyleValues += 'QPushButton:hover{'
            StyleValues += 'background-color:white; '
            StyleValues += 'color:black; '
            StyleValues += ' } '
            self.setStyleSheet(StyleValues)
            self.setAutoFillBackground(True)
            # -------
            BtnFont = QFont()
            BtnFont.setPixelSize(20)
            BtnFont.setBold(True)
            self.setFont(BtnFont)
            # -------
            self.setAutoExclusive(False)
            self.setAutoDefault(False)
            self.setAutoRepeat(False)
            self.setDefault(False)
            self.setFlat(False)
    
    class CenterPanel(QWidget):
        def __init__(self, parent):
            QWidget.__init__(self)
            self.Parent = parent
            # -------
            Palet = QPalette()
            Palet.setColor(QPalette.Window, QColor(243, 239, 255))
            self.setPalette(Palet)
            self.setAutoFillBackground(True)
            # -------
            lblHeadr1 = HeaderLabel('Введите текст')
            # -------
            HBox1 = QHBoxLayout()
            HBox1.addStretch(1)
            HBox1.addWidget(lblHeadr1)
            HBox1.addStretch(1)
            # -------
            self.lneBigArea1 = QLineEdit()
            self.lneBigArea1.setMinimumHeight(121)
            self.lneBigArea1.setMaximumHeight(121)
            self.lneBigArea1.setReadOnly(False)
            # -------
            HBox2 = QHBoxLayout()
            HBox2.addWidget(self.lneBigArea1)
            # -------
            self.btnOne = BasicButton('Очистить поля', 181)
            self.btnOne.clicked.connect(self.Shift)
            # -------
            self.btnTwo = BasicButton('Выполнить', 171)
            self.btnTwo.clicked.connect(self.DoNothing)
            # -------
            HBox3 = QHBoxLayout()
            HBox3.addWidget(self.btnOne)
            HBox3.addSpacing(40)
            HBox3.addWidget(self.btnTwo)
            HBox3.addStretch(1)
            # -------
            lblHeadr2 = HeaderLabel('Результат преобразования')
            # -------
            HBox4 = QHBoxLayout()
            HBox4.addStretch(1)
            HBox4.addWidget(lblHeadr2)
            HBox4.addStretch(1)
            # -------
            self.lneBigArea2 = QLineEdit()
            self.lneBigArea2.setMinimumHeight(131)
            self.lneBigArea2.setMaximumHeight(131)
            self.lneBigArea2.setStyleSheet("background:transparent;")
            self.lneBigArea2.setReadOnly(True)
            # -------
            HBox5 = QHBoxLayout()
            HBox5.addWidget(self.lneBigArea2)
            # -------
            self.btnTre = BasicButton('Закрыть программу', 241)
            self.btnTre.clicked.connect(self.CloseApp)
            # -------
            HBox6 = QHBoxLayout()
            HBox6.addStretch(1)
            HBox6.addWidget(self.btnTre)
            # -------
            VBox = QVBoxLayout()
            VBox.addLayout(HBox1)
            VBox.addLayout(HBox2)
            VBox.addSpacing(20)
            VBox.addLayout(HBox3)
            VBox.addSpacing(20)
            VBox.addLayout(HBox4)
            VBox.addSpacing(20)
            VBox.addLayout(HBox5)
            VBox.addLayout(HBox6)
            VBox.addStretch(1)
            # -------
            self.setLayout(VBox)
    
        @pyqtSlot()
        def Shift(self):
            intab = 'абвгдежзийклмнопрстуфхцчшщъыьэюя АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
            outtab = 'яюэьыъщшчцхфутсрпонмлкйизжедгвба5ЯЭЮЬЫЪЩШЧЦХФУТСРПОНМЛКЙИЗЖЕДГВБА'
    
          # I have no idea what this is doing other than it takes something from the 
          # first box and puts it in the second box
            trans = self.lneBigArea1.text()
            self.lneBigArea2.setText(trans.translate(str.maketrans(intab, outtab)))
    
          # Так как программа закрывается сразу же после ее запуска, то пришлось оставить строчку для ввода
          # input(" Нажмите для выхода ... ")
    
        @pyqtSlot()
        def DoNothing(self):
            self.Parent.SetStatus('Sorry I do not do anything')
    
        @pyqtSlot()
        def CloseApp(self):
            self.Parent.CloseApp()
    
    class MainDisply(QMainWindow):
        def __init__(self):
            QMainWindow.__init__(self)
            Top=300; Left=500; Width=618; Hight=538
            self.setGeometry(Left, Top, Width, Hight)
            self.setWindowTitle('Атбаш')
    
            self.CenterPane = CenterPanel(self)
            self.setCentralWidget(self.CenterPane)
            
            self.StatusMsg = self.statusBar()
    
        def SetStatus(self, Text):
            self.StatusMsg.showMessage(Text)
    
        def CloseApp(self):
            self.close()
    
    if __name__ == "__main__":
        MainEventHandler = QApplication([])
    
      # Следующий код отвечает за открытие интерфейса
        MainApplication = MainDisply()
        MainApplication.show()
        
      # Выход из приложения
        MainEventHandler.exec()