Соединение кода PyQt5 и Pyrogram
Пишу телеграмм утилиту, сделал консоль версию, решил написать GUI, и если уже делать, то делать сразу хорошо, а значит - PyQt5. Никогда раньше не работал с этой библиотекой, накидал дизайн через Qt designer, перекомпилировал, и завис, я просто не понимаю как это объединить, мне даже не может помочь чат-гпт, вроде все открывается, все запускается, но ничего не работает. Моя телеграмм утилита - юзер-бот, вы вводите в чат команду, и если она есть в коде - выполняется. Еще не отказался бы от помощи, если бы вы подсказали как считать IDLE checkbox и IDLE_text((.Ниже я прикреплю фрагменты кода самого окна, и парочки команд, чтобы примерно было понятно что происходит ( они все однотипные ). Я буду за вас молиться, если вы мне поможете, пожалуйста... Вот код окна:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_TGHelperGUI(object):
def setupUi(self, TGHelperGUI):
TGHelperGUI.setObjectName("TGHelperGUI")
TGHelperGUI.setEnabled(True)
TGHelperGUI.resize(963, 488)
TGHelperGUI.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
TGHelperGUI.setMouseTracking(False)
TGHelperGUI.setStyleSheet("background-color: rgb(192, 143, 221);")
self.centralwidget = QtWidgets.QWidget(TGHelperGUI)
self.centralwidget.setObjectName("centralwidget")
self.TGHelper = QtWidgets.QLabel(self.centralwidget)
self.TGHelper.setGeometry(QtCore.QRect(20, 20, 331, 101))
self.TGHelper.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
self.TGHelper.setStyleSheet("font: 48pt \"Papyrus\";")
self.TGHelper.setObjectName("TGHelper")
self.telegram_link = QtWidgets.QLabel(self.centralwidget)
self.telegram_link.setGeometry(QtCore.QRect(20, 120, 241, 41))
self.telegram_link.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
self.telegram_link.setStyleSheet("font: 20pt \"Papyrus\";")
self.telegram_link.setObjectName("telegram_link")
self.Action_Report = QtWidgets.QLabel(self.centralwidget)
self.Action_Report.setGeometry(QtCore.QRect(610, 190, 181, 31))
self.Action_Report.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
self.Action_Report.setStyleSheet("font: 20pt \"Papyrus\";")
self.Action_Report.setObjectName("Action_Report")
self.Actions = QtWidgets.QScrollArea(self.centralwidget)
self.Actions.setGeometry(QtCore.QRect(20, 230, 571, 231))
self.Actions.viewport().setProperty("cursor", QtGui.QCursor(QtCore.Qt.ForbiddenCursor))
self.Actions.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Actions.setAutoFillBackground(False)
self.Actions.setStyleSheet("background-color: rgb(134, 97, 156);\n"
"border: none;\n"
"")
self.Actions.setWidgetResizable(True)
self.Actions.setObjectName("Actions")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 571, 231))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.Actions.setWidget(self.scrollAreaWidgetContents)
self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
self.scrollArea.setGeometry(QtCore.QRect(610, 230, 301, 231))
self.scrollArea.viewport().setProperty("cursor", QtGui.QCursor(QtCore.Qt.ForbiddenCursor))
self.scrollArea.setStyleSheet("background-color: rgb(134, 97, 156);\n"
"border: none;")
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 301, 231))
self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
self.scrollArea.setWidget(self.scrollAreaWidgetContents_2)
self.Messages = QtWidgets.QLabel(self.centralwidget)
self.Messages.setGeometry(QtCore.QRect(20, 180, 121, 41))
self.Messages.setStyleSheet("font: 20pt \"Papyrus\";")
self.Messages.setObjectName("Messages")
self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.gridLayoutWidget.setGeometry(QtCore.QRect(610, 20, 301, 155))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.IDLE = QtWidgets.QCheckBox(self.gridLayoutWidget)
self.IDLE.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
self.IDLE.setStyleSheet("font: 16pt \"Papyrus\";")
self.IDLE.setObjectName("IDLE")
self.gridLayout.addWidget(self.IDLE, 0, 0, 1, 1)
self.Autoload = QtWidgets.QCheckBox(self.gridLayoutWidget)
self.Autoload.setStyleSheet("font: 16pt \"Papyrus\";")
self.Autoload.setObjectName("Autoload")
self.gridLayout.addWidget(self.Autoload, 0, 1, 1, 1)
self.IDLE_text = QtWidgets.QTextEdit(self.gridLayoutWidget)
self.IDLE_text.viewport().setProperty("cursor", QtGui.QCursor(QtCore.Qt.CrossCursor))
self.IDLE_text.setStyleSheet("background-color: rgb(255, 255, 255);")
self.IDLE_text.setObjectName("IDLE_text")
self.gridLayout.addWidget(self.IDLE_text, 1, 0, 1, 2)
self.Confirm = QtWidgets.QPushButton(self.gridLayoutWidget)
self.Confirm.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
self.Confirm.setStyleSheet("font: 12pt \"Papyrus\";\n"
"background-color: rgb(134, 97, 156);")
self.Confirm.setObjectName("Confirm")
self.gridLayout.addWidget(self.Confirm, 2, 0, 1, 2)
TGHelperGUI.setCentralWidget(self.centralwidget)
self.actionRed = QtWidgets.QAction(TGHelperGUI)
font = QtGui.QFont()
font.setFamily("Papyrus")
font.setPointSize(10)
self.actionRed.setFont(font)
self.actionRed.setObjectName("actionRed")
self.actionPurple = QtWidgets.QAction(TGHelperGUI)
font = QtGui.QFont()
font.setFamily("Papyrus")
font.setPointSize(10)
self.actionPurple.setFont(font)
self.actionPurple.setObjectName("actionPurple")
self.actionWhite = QtWidgets.QAction(TGHelperGUI)
font = QtGui.QFont()
font.setFamily("Papyrus")
font.setPointSize(10)
self.actionWhite.setFont(font)
self.actionWhite.setObjectName("actionWhite")
self.retranslateUi(TGHelperGUI)
QtCore.QMetaObject.connectSlotsByName(TGHelperGUI)
def retranslateUi(self, TGHelperGUI):
_translate = QtCore.QCoreApplication.translate
TGHelperGUI.setWindowTitle(_translate("TGHelperGUI", "MainWindow"))
self.TGHelper.setText(_translate("TGHelperGUI", "TGHelper"))
self.telegram_link.setText(_translate("TGHelperGUI", "@utyara3 in telegram"))
self.Action_Report.setText(_translate("TGHelperGUI", "Action Report"))
self.Messages.setText(_translate("TGHelperGUI", "Messages"))
self.IDLE.setText(_translate("TGHelperGUI", "IDLE"))
self.Autoload.setText(_translate("TGHelperGUI", "AUTOLOAD"))
self.IDLE_text.setHtml(_translate("TGHelperGUI", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'Papyrus\'; font-size:11pt;\">Занят</span></p></body></html>"))
self.Confirm.setText(_translate("TGHelperGUI", "Confirm text"))
self.actionRed.setText(_translate("TGHelperGUI", "Red"))
self.actionPurple.setText(_translate("TGHelperGUI", "Purple"))
self.actionWhite.setText(_translate("TGHelperGUI", "White"))
Вот код другого файла, через который я подключаю это окно:
from PyQt5.QtWidgets import *
from window import Ui_TGHelperGUI
import sys
class TGHelper(QMainWindow):
def __init__(self):
super(TGHelper, self).__init__()
self.ui = Ui_TGHelperGUI()
self.ui.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
screen = TGHelper()
screen.show()
sys.exit(app.exec())
Вот код комманд:
@app.on_message(filters.command("task", prefixes=".") & filters.me)
@handle_exception
async def task(_, msg):
task_name = msg.text.split()[1]
taskk = ''
if os.path.exists("tasks/" + msg.chat.first_name + "/" + task_name + ".txt"):
with open("tasks/" + msg.chat.first_name + "/" + task_name + ".txt", "r") as f:
for line in f:
taskk += line
await msg.edit(taskk)
await print_use("task", msg)
else:
await msg.edit("Task not found")
@app.on_message(filters.command('calc', prefixes='.') & filters.me)
@handle_exception
async def calc(_, msg):
ex = " ".join(msg.text.split()[1:])
res = eval(ex)
await msg.edit(str(ex) + ' = ' + str(res))
await print_use('calc', msg)