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", "Закрыть программу"))
-
@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 Так это выход из приложения
-
@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
-
@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. Может спросил неправильно. Программа запускается, но при нажатии на кнопки ничего не происходит???
-
@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. Как это сделать?
-
@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
-
Переместить всю функцию целиком в класс Ui_Form?
-
-
@jsulm
Unfortunately, it doesn't work((
-
@VOLFRAMHERO Did you add
self.pushButton.clicked.connect(self.shift)
to setupUi? Also, you should remove that line from shift().
-
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()