在 PyQt 中打开第二个窗口

2023-12-26

我正在尝试使用 pyqt 在单击 QMainWindow 上的按钮时显示自定义 QDialog 窗口。我不断收到以下错误:

$ python main.py 
DEBUG: Launch edit window
Traceback (most recent call last):
  File "/home/james/Dropbox/Database/qt/ui_med.py", line 23, in launchEditWindow
    dialog = Ui_Dialog(c)
  File "/home/james/Dropbox/Database/qt/ui_edit.py", line 15, in __init__
    QtGui.QDialog.__init__(self)
TypeError: descriptor '__init__' requires a 'sip.simplewrapper' object but received a 'Ui_Dialog'

我已经浏览了几个在线教程,但大多数教程都没有展示如何使用非内置对话框窗口。我使用 pyuic4 生成了主窗口和对话框的代码。我认为相关代码应该如下。我在这里缺少什么?

class Ui_Dialog(object):
    def __init__(self, dbConnection):
        QtGui.QDialog.__init__(self)
        global c
        c = dbConnection

class Ui_MainWindow(object):
    def __init__(self, dbConnection):
        global c
        c = dbConnection

    def launchEditWindow(self):
        print "DEBUG: Launch edit window"
        dialog = QtGui.QDialog()
        dialogui = Ui_Dialog(c)
        dialogui = setupUi(dialog)
        dialogui.show()

class StartQT4(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        conn = sqlite3.connect('meds.sqlite')
        c = conn.cursor()
        self.ui = Ui_MainWindow(c)
        self.ui.setupUi(self)

def main():
    app = QtGui.QApplication(sys.argv)
    program = StartQT4()
    program.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

额外问题:由于看起来您无法在 pyqt 函数回调中传递参数,因此将原本作为参数传递的内容(名称不佳的“c”)设置为全局是将信息获取到这些函数的最佳方式吗?


我过去就这样做过,而且我可以说它是有效的。 假设您的按钮名为“Button”

class Main(QtGui.QMainWindow):
    ''' some stuff '''
    def on_Button_clicked(self, checked=None):
        if checked==None: return
        dialog = QDialog()
        dialog.ui = Ui_MyDialog()
        dialog.ui.setupUi(dialog)
        dialog.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        dialog.exec_()

这适用于我的应用程序,我相信它也应该适用于您的应用程序。希望它会有所帮助,将其应用到您的案例中所需的一些更改应该非常简单。 祝大家有美好的一天。

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

在 PyQt 中打开第二个窗口 的相关文章

  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • Python逻辑运算符优先级[重复]

    这个问题在这里已经有答案了 哪个运算符优先4 gt 5 or 3 lt 4 and 9 gt 8 这会被评估为真还是假 我知道该声明3 gt 4 or 2 lt 3 and 9 gt 10 显然应该评估为 false 但我不太确定 pyth
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • 按元组分隔符拆分列表

    我有清单 print L I WW am XX newbie YY ZZ You WW are XX cool YY ZZ 我想用分隔符将列表拆分为子列表 ZZ print new L I WW am XX newbie YY ZZ You
  • 首先对列表中最长的项目进行排序

    我正在使用 lambda 来修改排序的行为 sorted list key lambda item item lower len item 对包含元素的列表进行排序A1 A2 A3 A B1 B2 B3 B 结果是A A1 A2 A3 B
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • 将项目从 Delphi 3 移至 Delphi 2010

    我被要求重新打开一个我在 1998 99 年用 Delphi 3 编写的项目 此后该项目一直稳定运行 我在一台老化的 Windows 98 机器上有 Delphi 3 代码库 它的存在只是为了让这个项目保持活力 显然 我想在进行任何重大修改
  • 如何在 PostgreSQL 中获取数组的最后一个元素?

    The 关于数组的 PostgreSQL 文档 http www postgresql org docs 9 2 static arrays html提供了一个使用示例 1 访问数组的最后一个元素 然而虽然SELECT arr 2 3 产生
  • Notepad++ 查找文件名

    在Notepad 中 我有时需要打开存在于不同文件夹中的文件 这需要时间才能转到文件夹 并通过Light Explorer搜索文件 Notepad 有什么功能或插件可以让我直接打开文件吗 假设 如果我需要打开一个名为 notepad php
  • 检查元素是否包含#shadow-root

    是否可以查看 Shadow DOM 元素是否存在 我不太关心操纵它 甚至不是真正针对它 我理解封装的原因 但我希望能够根据 Shadow DOM 元素是否存在来设置常规 DOM 中其他元素的样式 有点像 if element id shad
  • Win32/MFC 从客户端矩形获取窗口矩形

    我知道有一个函数可以接受客户端矩形 并将其转换为窗口矩形 我只是找不到 记住它 有谁知道它是什么 它会做类似的事情 const CRect client 0 0 200 200 const CRect window ClientRectTo
  • 插件“FEDERATED”已禁用

    我尝试使用 easyPHP 启动 MySQL 响应是日志文件的警报窗口 主要错误是 通过网上研究 我发现解决方案是将联合选项添加到my ini文件 我这样做了 但它仍然不起作用 以下是日志文件的摘录 以了解更多信息 2013 05 03 1
  • 获取点击元素的ID

    div div div div 尝试此方法来获取单击的元素的 ID 并发出警报 我确信这是我所缺少的一些非常基本的东西 有人可以帮忙吗 这实际上非常基本 停止使用内联事件处理程序
  • 每次尝试以特定顺序循环 3 个线程

    我的问题是如何让一个线程运行 然后再运行一次 然后再次运行 然后它会重复本身 我有一个主文件 private static ThreadManager threadManager public static void main String
  • 通用选择不适用于位类型

    基于这个答案 https stackoverflow com a 18469483 1993545 我尝试为我的桌子创建一个选择 ALTER PROCEDURE Einrichtung Select Parameters with defa
  • 如何在 Jetpack Compose 中向图标添加阴影/边框/高度

    我想在 Jetpack compose 中为我的图标添加阴影 以便图像和文本具有 大致 相似的阴影 Text text HAS SHADOW style MaterialTheme typography body2 copy shadow
  • 打印汉字的ESC/POS命令

    打印机型号 爱普生TM T88V ESC POS命令指南 见P 115 http download delfi com SupportDL Epson Manuals TM T88IV Programming 20manual 20APG
  • 是否需要将原始类型键入枚举?

    我正在浏览NSString查看头文件 看看 Apple 如何编写枚举 并发现了这段代码 enum NSStringEncodingConversionAllowLossy 1 NSStringEncodingConversionExtern
  • Google DataFlow/Python:save_main_session 和 __main__ 中的自定义模块导入错误

    有人可以澄清使用时的预期行为吗save main session和导入的自定义模块 main 我的 DataFlow 管道导入 2 个非标准模块 一个通过requirements txt另一个通过setup file 除非我将导入移至使用它
  • 从txt中解析IP地址

    我正在尝试下载一个txt您可以找到的文件here http proxy ip list com download free proxy list txt 下载文件不是问题 testfile urllib URLopener testfile
  • 创建数组的副本并操作原始数组

    首先我要为我糟糕的英语道歉 我会尽力说得清楚 我有一个 3 维数组 只是一个 2 维数组的数组 我的目标是获取其中一个二维数组 并将其逆时针旋转 90 它看起来像这样 1 2 3 4 5 6 7 8 9 我尝试让它像这样 旋转 3 6 9
  • 发生类型错误:超出翻译容量

    当我运行我的示例时 出现以下类型错误 Translation capacity exceeded In this scope universe contains 21 atoms and relations of arity 8 canno
  • 未捕获的 RangeError:超出了最大调用堆栈大小,JavaScript

    我有个问题 open function type Some code document getElementById type addEventListener click l close type false close function
  • 写入开始后无法设置此属性!在 C# WebRequest 对象上

    我想重用 WebRequest 对象 以便保存 cookie 和会话以供以后向服务器请求 下面是我的代码 如果我第二次使用 Post 函数两次 request ContentLength byteArray Length 它会抛出异常 写入
  • 分叉的 IORef 读取器函数似乎会停止主线程

    我正在对并发性和内存可见性进行一些实验 并遇到了这种奇怪的行为 请参阅内联评论 module Main where import Data IORef import Control Concurrent import System CPUT
  • 在 PyQt 中打开第二个窗口

    我正在尝试使用 pyqt 在单击 QMainWindow 上的按钮时显示自定义 QDialog 窗口 我不断收到以下错误 python main py DEBUG Launch edit window Traceback most rece