如何在pyside中打开一个新窗口

Posted

技术标签:

【中文标题】如何在pyside中打开一个新窗口【英文标题】:How to open a new window in pyside 【发布时间】:2013-03-04 15:20:36 【问题描述】:

我是 Python 和 pyside 的初学者。我有一个 .ui 文件,我想在单击主窗口中的按钮时将其作为第二个窗口打开。我使用了这段代码,但它可能因为“自我”而关闭了主窗口。请帮帮我。

class PhoneBook:

   def __init__(self):
        loader = QUiLoader();       
        file = QFile("PhoneBook.ui");   
        file.open(QFile.ReadOnly);  
        self.ui = loader.load(file);    
        file.close();           
        self.ui.pushButton.clicked.connect(self.add);

  def __del__ ( self ):
        self.ui = None;

  def add(self):
        loader1 = QUiLoader();      
        file1 = QFile("Add.ui");    
        file1.open(QFile.ReadOnly); 
        self.ui = loader1.load(file1);  
        file1.close();          
        self.ui.show();

  def show(self):
        self.ui.show();

【问题讨论】:

我没有 PySide 的工作知识,但您的猜测接近事实,在您的 add() 方法中,您实际上是用新加载的 ui 文件覆盖了对象变量 self.ui .如果您打算添加另一个窗口,请通过创建局部变量 ui2 或另一个对象变量 self.ui2 来生成另一个窗口,这取决于您需要对第二个窗口做什么。 谢谢woozyking。它真的奏效了。但只是另一个菜鸟问题。如何使用 QDialog 创建一个新对话框?表示我想在 add 方法中创建一个新对话框而不使用 .ui 文件。 很高兴有帮助。正如我所说,我没有 PySide 的工作知识。查看他们的官方文档srinikom.github.com/pyside-docs 以获得深入参考。我确信有一些方法可以在不使用此类 .ui 文件的情况下以编程方式操作 UI 元素 【参考方案1】:

我也是菜鸟。关于如何制作对话,我认为您的观点是输入对话,您想在其中输入该电话簿的数据。我发现的最简单的方法是这样的:

txtLabel = "Put some value into dialog"
inputText, ok = QInputDialog.getText(self, "Dialog Name", txtLabel)
if ok:
    print ".........."
    print inputText

...这是用于某些字符串输入的最简单对话框(QInputDialog)。如果您需要更高要求的对话框(迟早会的),您应该使用 QDialog 基类。在这种情况下,您到底想放入什么,它的外观以及有关其行为的所有内容。在 PySide DOCS 上,几乎所有内容都得到了很好的解释。

【讨论】:

感谢亚历克斯的回答。该链接肯定提供了很多信息。

以上是关于如何在pyside中打开一个新窗口的主要内容,如果未能解决你的问题,请参考以下文章

Maya (PySide2) - 重新打开窗口而不是新窗口

Pyside / Pyqt 从窗口打开新窗口(事件循环已在运行)

使用 Pyside 从主窗口打开子对话框窗口

如何使用 PySide 在 Maya 中为通道框添加新按钮?

如何在 PySide 应用程序中隐藏 CMD 窗口

在 PySide (Qt) 中打开另一个程序并在原始窗口中显示