Мне нужна программа, чтобы открыть новое окно из главного окна. После некоторых исследований я нашел, как это сделать, и теперь я могу открыть другое окно из первого. Проблема возникает, когда я хочу спрятать второе окно и go вернуться к первому. Я попытался self.hide()
, self.close()
, self.terminate()
, self.destroy()
.
Все они просто закрывают второе окно так же, как и первое. Как я могу только закрыть второе окно, но снова переключиться на первое. Мне нужно это для экрана настроек. Я нажимаю кнопку, она открывает окно настроек, вы меняете некоторые настройки и нажимаете «Готово». После этого я бы хотел, чтобы он вернулся в первое окно, но он просто закрывает оба.
Это мой код на данный момент:
main.py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'E:\Hacking\Hackovi\MCheat 2.0\main.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from AutoBowGUI import Ui_Form
from PyQt5 import QtCore, QtGui, QtWidgets
import configparser
parser = configparser.ConfigParser()
parser.read('Config.ini')
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(188, 137)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.ChatResponderB = QtWidgets.QPushButton(self.centralwidget)
self.ChatResponderB.setGeometry(QtCore.QRect(30, 10, 101, 31))
self.ChatResponderB.setObjectName("ChatResponderB")
self.ChatResponderC = QtWidgets.QCheckBox(self.centralwidget)
self.ChatResponderC.setGeometry(QtCore.QRect(10, 20, 70, 17))
self.ChatResponderC.setText("")
self.ChatResponderC.setObjectName("ChatResponderC")
self.AutoClickerB = QtWidgets.QPushButton(self.centralwidget)
self.AutoClickerB.setGeometry(QtCore.QRect(30, 50, 101, 31))
self.AutoClickerB.setObjectName("AutoClickerB")
self.AutoClickerC = QtWidgets.QCheckBox(self.centralwidget)
self.AutoClickerC.setGeometry(QtCore.QRect(10, 60, 70, 17))
self.AutoClickerC.setText("")
self.AutoClickerC.setObjectName("AutoClickerC")
self.AutoBowB = QtWidgets.QPushButton(self.centralwidget)
self.AutoBowB.setGeometry(QtCore.QRect(30, 90, 101, 31))
self.AutoBowB.setObjectName("AutoBowB")
self.AutoBowC = QtWidgets.QCheckBox(self.centralwidget)
self.AutoBowC.setGeometry(QtCore.QRect(10, 100, 70, 17))
self.AutoBowC.setText("")
self.AutoBowC.setObjectName("AutoBowC")
self.ChatResponderO = QtWidgets.QPushButton(self.centralwidget)
self.ChatResponderO.setGeometry(QtCore.QRect(130, 10, 31, 31))
self.ChatResponderO.setObjectName("ChatResponderO")
self.AutoClickerO = QtWidgets.QPushButton(self.centralwidget)
self.AutoClickerO.setGeometry(QtCore.QRect(130, 50, 31, 31))
self.AutoClickerO.setObjectName("AutoClickerO")
self.AutoBowO = QtWidgets.QPushButton(self.centralwidget)
self.AutoBowO.setGeometry(QtCore.QRect(130, 90, 31, 31))
self.AutoBowO.setObjectName("AutoBowO")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
self.AutoBowO.clicked.connect(self.AutoBowOptions)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def AutoBowOptions(self):
self.window = QtWidgets.QMainWindow()
self.ui = Ui_Form()
self.ui.setupUi(self.window)
self.window.show()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MCheat"))
self.ChatResponderB.setText(_translate("MainWindow", "Chat Responder"))
self.AutoClickerB.setText(_translate("MainWindow", "AutoClicker"))
self.AutoBowB.setText(_translate("MainWindow", "AutoBow"))
self.ChatResponderO.setText(_translate("MainWindow", "..."))
self.AutoClickerO.setText(_translate("MainWindow", "..."))
self.AutoBowO.setText(_translate("MainWindow", "..."))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
AutoBow GUI .py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'AutoBowGUI.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
import configparser
import time
config = configparser.ConfigParser()
config.read('Config.ini')
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(220, 130)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(60, 100, 75, 23))
self.pushButton.setObjectName("pushButton")
self.lineEdit = QtWidgets.QLineEdit(Form)
self.lineEdit.setGeometry(QtCore.QRect(90, 10, 111, 20))
self.lineEdit.setObjectName("lineEdit")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(10, 10, 71, 16))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(10, 40, 71, 16))
self.label_2.setObjectName("label_2")
self.lineEdit_2 = QtWidgets.QLineEdit(Form)
self.lineEdit_2.setGeometry(QtCore.QRect(90, 40, 41, 20))
self.lineEdit_2.setObjectName("lineEdit_2")
self.lineEdit_3 = QtWidgets.QLineEdit(Form)
self.lineEdit_3.setGeometry(QtCore.QRect(160, 40, 41, 20))
self.lineEdit_3.setObjectName("lineEdit_3")
self.lineEdit_4 = QtWidgets.QLineEdit(Form)
self.lineEdit_4.setGeometry(QtCore.QRect(90, 70, 41, 20))
self.lineEdit_4.setObjectName("lineEdit_4")
self.label_3 = QtWidgets.QLabel(Form)
self.label_3.setGeometry(QtCore.QRect(10, 70, 71, 16))
self.label_3.setObjectName("label_3")
self.lineEdit_5 = QtWidgets.QLineEdit(Form)
self.lineEdit_5.setGeometry(QtCore.QRect(160, 70, 41, 20))
self.lineEdit_5.setObjectName("lineEdit_5")
self.label_4 = QtWidgets.QLabel(Form)
self.label_4.setGeometry(QtCore.QRect(140, 40, 16, 16))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(Form)
self.label_5.setGeometry(QtCore.QRect(140, 70, 16, 16))
self.label_5.setObjectName("label_5")
self.pushButton.clicked.connect(self.done)
self.lineEdit.setText(str(config.get("AutoBow", "drawdelay")))
self.lineEdit_2.setText(str(config.get("AutoBow", "start1")))
self.lineEdit_3.setText(str(config.get("AutoBow", "start2")))
self.lineEdit_4.setText(str(config.get("AutoBow", "pause1")))
self.lineEdit_5.setText(str(config.get("AutoBow", "pause2")))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def done(self, From):
config.set("AutoBow", "drawdelay", self.lineEdit.text())
config.set("AutoBow", "start1", self.lineEdit_2.text())
config.set("AutoBow", "start2", self.lineEdit_3.text())
config.set("AutoBow", "pause1", self.lineEdit_4.text())
config.set("AutoBow", "pause2", self.lineEdit_5.text())
with open('Config.ini', 'w') as configfile:
config.write(configfile)
time.sleep(0.5)
self.close()
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "AutoBow"))
self.pushButton.setText(_translate("Form", "Done"))
self.label.setText(_translate("Form", "Draw Delay"))
self.label_2.setText(_translate("Form", "Start Keybind"))
self.label_3.setText(_translate("Form", "Pause Keybind"))
self.label_4.setText(_translate("Form", "+"))
self.label_5.setText(_translate("Form", "+"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
На данный момент моя программа может выполнять следующие действия:
- Показать первое окно.
- При нажатии кнопки открывается второе окно.
- При нажатии «готово» сохраняет параметры в файле конфигурации.
- By нажатие «Готово» закрывает второе окно, но первое остается открытым. (отсутствует)