我正在创建一个具有另一个窗口形状的设置菜单的程序(这曾经是一个QMainWindow但我读到QDialog会更好地工作,所以我手动将QMainWindow转换为QDialog窗口)
我自己创建了设置菜单,它自己完全正常工作,但是当我尝试将它集成到我的主程序中时,辅助程序的部分让我操纵QDialog本身(例如调整大小)导致我的程序崩溃。
以下是我所指的具体部分:
def preset(self):
self.op_summer_papers.hide()
self.op_winter_papers.hide()
Dialog.resize(302, 450)
"对话框"是分配给QDialog本身的名称,它甚至在调用第二个窗口时使用,如下所示:
def settings_panel(self):
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.exec_()
现在我曾经有两个单独的.py文件,一个用于主窗口,一个用于设置对话框,设置对话框在单独作为单独实体运行时完美运行。但是,当我使用上面的代码并将其集成到我的主程序中时,任何调用" Dialog"程序崩溃导致程序崩溃(我甚至尝试过' Dialog.close()'并且也崩溃了。)
我已经尝试将这两个文件合并到一个文件中,但这也没有用。我尝试过使用" self.resize()"而不是" Dialog.resize",也没有工作。
这里是完整的文件(编辑后仅包含相关位):
from PyQt5 import QtCore, QtGui, QtWidgets
import random
import os
class Ui_MainWindow(object):
def settings_panel(self):
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.exec_()
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
MainWindow.resize(807, 524)
# The setupUI continues here, setting up the main window
self.home()
def home(self):
self.actionOptions.triggered.connect(self.settings_panel)
# Now this launches the dialog window (works fine here)
# Below is the code for the second program
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(302, 150)
# The "Dialog.resize()" here works as intended
self.home()
def home(self):
self.op_custom_radio.toggled.connect(self.custom)
self.op_preset_radio.toggled.connect(self.preset)
def custom(self):
Dialog.resize(302, 450)
def preset(self):
Dialog.resize(302, 150)
# The Dialog.resize() here causes the program to crash
" Dialog.resize()"当应用程序是独立的时,部分工作完全正常,但它现在不再适用于我的主要应用程序。