在 pyqt4 中,如何从现有窗口打开新窗口?

2024-01-11

我想从 pyqt 中的现有窗口打开新窗口。

我的源代码有两个功能。

  • 功能之一:单击按钮时,打开文件对话框。 另一个功能:当单击另一个按钮时,新窗口 打开。

但是当我想要新窗口时,出现错误消息:

回溯(最近一次调用最后一次):文件“C:\Users\Han\Desktop\project\prototype\newwindow.py”,第 61 行,在 check_start self.w.show() AttributeError: 'Ui_dialog' 对象没有属性 '展示'

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
    return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(518, 349)
        self.label = QtGui.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(40, 40, 141, 16))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(Form)
        self.label_2.setGeometry(QtCore.QRect(400, 330, 141, 16))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.horizontalLayoutWidget = QtGui.QWidget(Form)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(70, 200, 381, 31))            self.horizontalLayoutWidget.setObjectName(_fromUtf8("horizontalLayoutWidget"))
        self.horizontalLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.textEdit = QtGui.QTextEdit(self.horizontalLayoutWidget)
        self.textEdit.setObjectName(_fromUtf8("textEdit"))
        self.horizontalLayout.addWidget(self.textEdit)
        self.pushButton = QtGui.QPushButton(self.horizontalLayoutWidget)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.horizontalLayout.addWidget(self.pushButton)
        self.pushButton_2 = QtGui.QPushButton(Form)
        self.pushButton_2.setGeometry(QtCore.QRect(230, 270, 75, 23))
        self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))

        self.retranslateUi(Form)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.file_open)
        QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), self.check_start)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Off_Strip", None))
        self.label.setText(_translate("Form", "123", None))
        self.label_2.setText(_translate("Form", "@Copyright MokLab", None))
        self.pushButton.setText(_translate("Form", "123", None))
        self.pushButton_2.setText(_translate("Form", "123!", None))

    def file_open(self):
        fname = QtGui.QFileDialog.getOpenFileName()
        f = open(fname, 'r')
        f.close()

    def check_start(self):
        self.w = Ui_dialog()
        self.w.show()

class Ui_dialog(object):
    def setupUi(self, dialog):
        dialog.setObjectName(_fromUtf8("dialog"))
        dialog.resize(400, 300)
        self.pushButton = QtGui.QPushButton(dialog)
        self.pushButton.setGeometry(QtCore.QRect(190, 130, 75, 23))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.radioButton = QtGui.QRadioButton(dialog)
        self.radioButton.setGeometry(QtCore.QRect(30, 70, 90, 16))
        self.radioButton.setObjectName(_fromUtf8("radioButton"))
        self.radioButton_2 = QtGui.QRadioButton(dialog)
        self.radioButton_2.setGeometry(QtCore.QRect(40, 110, 90, 16))
        self.radioButton_2.setObjectName(_fromUtf8("radioButton_2"))

        self.retranslateUi(dialog)
        QtCore.QMetaObject.connectSlotsByName(dialog)

    def retranslateUi(self, dialog):
        dialog.setWindowTitle(_translate("dialog", "Form", None))
        self.pushButton.setText(_translate("dialog", "PushButton", None))
        self.radioButton.setText(_translate("dialog", "RadioButton", None))
        self.radioButton_2.setText(_translate("dialog", "RadioButton", None))

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Form = QtGui.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

线路self.w.show,你声明的地方w as a Ui_dialog对象,将尝试调用show里面的实例变量Ui_dialog,这不起作用,因为您从未定义过任何名为的函数show.

继承了也没有什么帮助object上课Ui_dialog。你可能应该继承QtGui.QDialog对于该类,并相应地重写你的类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 pyqt4 中,如何从现有窗口打开新窗口? 的相关文章

随机推荐

  • 存储轮播图像的最佳方式是什么?

    我正在使用 Ruby on Rails 我的目标网页上有两个轮播 我想知道存储和显示这些图像的最佳方式是什么 选项一 将图像放入assets images并在轮播中显示它们 如果这是一种好方法 我可以循环浏览文件夹中的图像还是必须指定每个文
  • 我可以在 WinRT 应用程序中使用 Sqlite (javascript) 吗?

    是否可以在 Windows 8 winRT javascript 应用程序中使用 Sqlite 数据库 我想要实现的是下载一个 Sqlite 数据库并在使用前将其存储在本地存储中 我相信某种形式的本地存储可用于基于 javascript 的
  • 从头开始创建 geom / stat

    我不久前刚刚开始使用 R 目前正在努力加强我的可视化技能 我想做的是创建箱线图平均钻石作为顶部的一层 参见下面链接中的图片 我还没有找到任何可以执行此操作的函数 所以我想我必须自己创建它 我希望做的是创建一个几何或统计数据 让这样的事情能够
  • Azure 服务总线重试策略不会改变行为

    我试图了解 Azure 服务总线上的重试策略 但它没有按我预期的方式工作 我有以下代码 它既侦听消息又将消息发送到特定的天蓝色队列 using System using Microsoft ServiceBus using Microsof
  • 如何更改 C# 中 UWP 应用中按钮的背景颜色?

    我有一个简单的 我需要每秒改变按钮的颜色 我用这个代码btnBlue Background new SolidColorBrush Windows UI Colors Blue 但它不包含我在 xaml 中使用的自定义颜色 例如 FF30B
  • 带参数“-S -save-temps”的 gcc 将中间文件放入当前目录中

    参数 S save temps工作正常 只要我不在同名文件上使用它们 考虑以下情况 我有一个项目 有一个主目录和一个名为subDir并且在这两个目录中都放置了名为file c 如果我现在打电话gcc S save temps file cp
  • 如何锁定 iPhone 某些视图控制器的方向 - Swift?

    我有 2 个视图控制器 VC1 和 VC2 VC1 目前以模态方式呈现 VC2 VC1 仅方向应为纵向 但 VC2 可以具有所有方向 问题是当我在 VC2 中并且我旋转到横向模式然后关闭时 VC1 也处于横向模式 这绝对不应该发生 NOTE
  • 单元测试实体框架验证

    我使用 IValidatableObject 为某些实体框架对象编写了一些自定义验证 并向对象添加了一些 DataAnnotations 以进行验证 我想测试验证是否满足所需的验证 确保自定义验证正常工作 并且所做的任何更改都保留这些数据注
  • Ansible:如何初始化 git bare 存储库并将其克隆到同一台机器?

    我想问一下 如何使用 Ansible 来实现这样的情况 我的主要目标是 nit git bare 存储库并将其克隆到同一台计算机 var www 我通常的步骤是 1 git init bare 在 git project name 中运行
  • 模板特化与别名模板推导区别

    我很难理解在以下情况下演绎是如何工作的 template
  • Laravel 通知 - 延迟电子邮件发送并在满足条件时取消

    我有一个应用程序 我在其中发送推送通知 如果用户登录到该应用程序 那就没问题 但是 如果他们没有登录 如果他们在 X 分钟内没有阅读通知 我想向他们发送一封电子邮件 我的方法是使用 Laravel 通知来创建邮件 广播和数据库通知 上toM
  • 构造函数可以中止实例化吗?

    我想在构造函数中进行测试 以确定当前使用给定参数实例化对象是否是一个好主意 但是我怎样才能中止构造函数并将警告返回到 new 语句呢 调用者必须在每个 新 语句之前完成此类测试吗 我认为构造函数将是一个好地方 您可以改用工厂对象 然后 这可
  • 设计可再确认的

    我想在我的用户模型中使用 devise 选项 reconfirmable 因此每当用户更改其电子邮件时 他需要通过电子邮件发送的链接进行确认 最大的问题是 电子邮件从未发送过 我的 devise 2 1 2 的设置是 用户模型 attr a
  • 错误:失败并出现错误:没有这样的项目:polymod

    我正在尝试制作一个 Friday Night Funkin mod 但是当我编译它时 出现以下错误 Error Could not find haxelib polymod does it need to be installed 所以我当
  • 允许在 Puppeteer 中的所有站点上运行 Flash

    免责声明 我知道 Flash 将在 2020 年底被放弃 但我就是无法放弃这种情况 需要在 Puppeteer 中使用 Flash 尽管我也不喜欢它 我需要抓取某些 Flash 网站并截取它们的屏幕截图 以供以后进行编程比较 我可以提供一个
  • 尽管调用了flush(),Servlet 仍缓冲响应

    我们有一个系统 客户端发出 HTTP GET 请求 系统在后端进行一些处理 压缩结果 然后将其发送给客户端 由于处理可能需要一些时间 因此我们将其作为ZipOutputStream包裹着response getOutputStream 然而
  • 在 iOS-7 中按需隐藏和显示左侧导航栏按钮

    我使用故事板添加了左侧导航栏按钮 但我希望它在我第一次加载屏幕时隐藏 然后为了回应其他事情 我希望它能显示出来 导航栏有一个隐藏后退按钮的方法 但没有隐藏 显示左按钮的方法 有一个简单的方法可以做到这一点吗 或者我是否必须使用两种方法 隐藏
  • fs.readFile异常

    尝试运行一个异步打开一堆文件并读取其内容的脚本 我在哪里收到错误fs readFile的回调没有数据 但文件在那里 并且当前没有被其他任何东西打开 完全困惑了 错误是 错误 好的 打开 D Workspace fasttrack publi
  • 执行 ansible include_tasks 直到满足特定条件(类似于 while 直到循环)

    我想执行包含任务列表 直到满足特定条件为止 我没有固定循环 但执行取决于条件 下面是示例播放 任务列表剧本tasks yml name inc test var test var set fact test var test var int
  • 在 pyqt4 中,如何从现有窗口打开新窗口?

    我想从 pyqt 中的现有窗口打开新窗口 我的源代码有两个功能 功能之一 单击按钮时 打开文件对话框 另一个功能 当单击另一个按钮时 新窗口 打开 但是当我想要新窗口时 出现错误消息 回溯 最近一次调用最后一次 文件 C Users Han