PyQt:一旦它与另一个窗口连接,如何引用对话窗口?

时间:2017-11-11 12:19:22

标签: python python-3.x qt pyqt pyqt5

我正在创建一个具有另一个窗口形状的设置菜单的程序(这曾经是一个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()"当应用程序是独立的时,部分工作完全正常,但它现在不再适用于我的主要应用程序。

0 个答案:

没有答案