如何正确初始化 QWizard 页面?

2023-12-08

我在将数据从 QWizard 页面发送到下一页时遇到问题。我正在使用一个变量my_nameQWizard 对象作为容器。 我的方法是:每当我更改 QLineEdit 的文本时Page1,变量my_name我的 QWizard 对象发生了变化。每当我单击“下一步”按钮时Page1, Page2使用方法初始化QWizard.initializePage(2)。但是 QLabel 对象Page2不是基于更新my_nameQWizard 对象的变量。即使我已经初始化了Page2还。我的方法有什么问题吗?

我的代码是:

import sys
from PyQt5.QtWidgets import *

class Window(QWizard):
    def __init__(self):
        super(Window, self).__init__()
        self.firstPage = MainPage(parent=self)
        self.my_name = 'Random'
        self.secondPage = Page2(parent=self)

        self.addPage(self.firstPage)
        self.button(QWizard.NextButton).clicked.connect(lambda: self.initializePage(2))
        self.addPage(self.secondPage)

class MainPage(QWizardPage):
    def __init__(self, parent=None):
        self.Parent = parent
        super(MainPage, self).__init__(parent)

        self.setTitle("Plz input your name?")

        self.NameLabel = QLabel("&Name:")
        self.NameLineEdit = QLineEdit()
        self.NameLineEdit.textChanged.connect(self.assign)
        self.NameLabel.setBuddy(self.NameLineEdit)

        layout = QHBoxLayout()
        layout.addWidget(self.NameLabel)
        layout.addWidget(self.NameLineEdit)
        self.setLayout(layout)

    def assign(self):
        self.Parent.my_name = self.NameLineEdit.text()
        print(f'Parent text is: {self.Parent.my_name}')

class Page2(QWizardPage):
    def __init__(self, parent=None):
        super(Page2, self).__init__()
        self.Parent = parent

        vbox = QVBoxLayout()
        label = QLabel()
        label.setText(f'My name is : {self.Parent.my_name}')
        vbox.addWidget(label)

        self.setLayout(vbox)

def main():
    app = QApplication(sys.argv)
    app.setStyle('plastique')

    window = Window()
    window.setWizardStyle(1)
    window.show()
    app.exec_()

if __name__ == "__main__":
    sys.exit(main())

更改变量“my_name”的值不会更改 QLabel 显示的内容,因为 QLabel 会复制文本。另一方面你不应该打电话initializePage(2)因为它是内部调用的受保护方法。解决方案是重写QWizardPage的initializePage方法:

class Page2(QWizardPage):
    def __init__(self, parent=None):
        super(Page2, self).__init__()
        self.Parent = parent

        vbox = QVBoxLayout(self)
        self.label = QLabel()
        self.label.setText(f'My name is : {self.Parent.my_name}')
        vbox.addWidget(self.label)

    def initializePage(self):
        self.label.setText(f'My name is : {self.Parent.my_name}')

尽管我看到您正在重新发明轮子,因为已经有注册字段的特征:

class Window(QWizard):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        self.firstPage = MainPage()
        self.secondPage = Page2()

        self.addPage(self.firstPage)
        self.addPage(self.secondPage)


class MainPage(QWizardPage):
    def __init__(self, parent=None):
        super(MainPage, self).__init__(parent)

        self.setTitle("Plz input your name?")

        self.NameLabel = QLabel("&Name:")
        self.NameLineEdit = QLineEdit()
        self.NameLabel.setBuddy(self.NameLineEdit)

        layout = QHBoxLayout(self)
        layout.addWidget(self.NameLabel)
        layout.addWidget(self.NameLineEdit)

        self.registerField("my_name", self.NameLineEdit)


class Page2(QWizardPage):
    def __init__(self, parent=None):
        super(Page2, self).__init__(parent)

        vbox = QVBoxLayout(self)
        self.label = QLabel()
        vbox.addWidget(self.label)

    def initializePage(self):
        self.label.setText(f'My name is : {self.field("my_name")}')
        super(Page2, self).initializePage()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确初始化 QWizard 页面? 的相关文章

  • 与 iexact 一起使用时,Django get_or_create 无法设置字段

    我想用name iexact with get or create尽可能避免用户输入字段的重复 我的提供者模型有一个名称字段 我在其中使用get or create 查找工作正常 但在第一次创建实例时 如下面的 p1 Timber 示例 名
  • PyList_SetItem 与 PyList_SETITEM

    据我所知 PyList SetItem 和 PyList SETITEM 之间的区别在于 PyList SetItem 会降低它覆盖的列表项的引用计数 而 PyList SETITEM 不会 我有什么理由不应该一直使用 PyList Set
  • Python Nose 导入错误

    我似乎无法理解鼻子测试框架 https nose readthedocs org en latest 识别文件结构中测试脚本下方的模块 我已经设置了演示该问题的最简单的示例 下面我会解释一下 这是包文件结构 init py foo py t
  • KFold 和 ShuffleSplit CV 有什么区别?

    看起来 KFold 每次迭代对象时都会生成相同的值 而 Shuffle Split 每次都会生成不同的索引 它是否正确 如果是这样 其中一个相对于另一个有什么用处 cv cross validation KFold 10 n folds 2
  • 为什么 tkinter / window.update 在我的程序中随着时间的推移变得更慢?

    我发现当我调用 window update 时 当向窗口写入的内容较少时 它的运行速度会更快 但后来 当我向窗口写入更多元素时 window update 需要更长的时间 请参阅下面的我的代码 您可以看到它在更新窗口之前一次向屏幕 100
  • Python 中的安全解除引用

    Groovy 有一个很好的安全取消引用运算符 这有助于避免 NullPointerExceptions variable method The method仅当以下情况时才会被调用variable is not null 有没有办法在 Py
  • conda 无法从 yml 创建环境

    我尝试运行下面的代码来从 YAML 文件创建虚拟 Python 环境 我在 Ubuntu 服务器上的命令行中运行代码 虚拟环境名为 py36 当我运行下面的代码时 我收到下面的消息 环境也没有被创建 这个问题是因为我有几个必须使用 pip
  • 字典中的列表,Python 中的循环

    我有以下代码 TYPES hotmail type hotmail lookup mixed dkim no signatures S Return Path email protected cdn cgi l email protecti
  • 在 Flask (WSGI) 中使用全局单例,我是否需要担心竞争条件? [复制]

    这个问题在这里已经有答案了 Flask 的 hello world 演示是 from flask import Flask app Flask name app route def hello return Hello World if n
  • 用Python中的嵌套for循环替换重复的if语句?

    在我编写的下面的代码中 n 4 所以有五个 if 语句 所以如果我想将 n 增加到 比如说 10 那么就会有很多 if 语句 因此我的问题是 如何用更优雅的东西替换所有 if 语句 n p 4 5 number of trials prob
  • 网页抓取 - 前往第 2 页

    如何访问数据集的第二页 无论我做什么 它都只返回第 1 页 import bs4 from urllib request import urlopen as uReq from bs4 import BeautifulSoup as sou
  • Python正则表达式从字符串中获取浮点数

    我正在使用正则表达式来解析字符串中的浮点数 re findall a zA Z d d t 是我使用的代码 这段代码有问题 如果数字和任何字符之间没有空格 则不会解析该数字 例如 0 1 2 3 4 5 6 7 8 9 的预期输出为 0 1
  • 如何在 Python 中从 HTML 页面中提取 URL [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我必须用Python 编写一个网络爬
  • Spark中的count和collect函数抛出IllegalArgumentException

    当我使用时抛出此异常时 我尝试在本地 Spark 上加载一个小数据集count 在 PySpark 中 take 似乎有效 我试图搜索这个问题 但没有找到原因 看来RDD的分区有问题 有任何想法吗 先感谢您 sc stop sc Spark
  • Django 接受 AM/PM 作为表单输入

    我试图弄清楚如何使用 DateTime 字段在 Django 中接受 am pm 作为时间格式 但我遇到了一些麻烦 我尝试在 forms py 文件中这样设置 pickup date time from DateTimeField inpu
  • 大型数据集上的 Sklearn-GMM

    我有一个很大的数据集 我无法将整个数据放入内存中 我想在这个数据集上拟合 GMM 我可以用吗GMM fit sklearn mixture GMM 重复小批量数据 没有理由重复贴合 只需随机采样您认为机器可以在合理时间内计算的尽可能多的数据
  • 最小硬币找零问题——回溯

    我正在尝试用最少数量的硬币解决硬币找零问题 采用回溯法 我实际上已经完成了它 但我想添加一些选项 按其单位打印硬币数量 而不仅仅是总数 这是我下面的Python代码 def minimum coins coin list change mi
  • 在 Python 的 Textmate 中突出显示尾随空格?

    我想做类似的事情this http remysharp com 2008 03 30 trailing white space in textmate Textmate 提示 这样当我在 Python 中编写代码时 尾随空白总是以某种方式突
  • 如何使用Featuretools按列值从单个数据框中的多个列创建特征?

    我正在尝试根据之前的结果来预测足球比赛的结果 我在 Windows 上运行 Python 3 6 并使用 Featuretools 0 4 1 假设我有以下代表结果历史记录的数据框 原始数据框 https i stack imgur com
  • 在Python 3.2中,我可以使用http.client打开并读取HTTPS网页,但urllib.request无法打开同一页面

    我想打开并阅读https yande re https yande re with urllib request 但我收到 SSL 错误 我可以使用以下方式打开并阅读页面http client用这个代码 import http client

随机推荐

  • NullPointerException:重写派生类中基类的构造函数调用方法

    我有这个代码片段 class Base public Base method void method System out println In Base class Derived extends Base private String
  • 用于处理多个未知回调的 JavaScript 函数

    我有一个场景 我想将 2 个或更多函数 作为参数 发送到处理函数中 并让该处理函数执行每个传递的函数作为前面函数的回调函数 这是我试图编写的函数的一般概念 function functionChain MAKE SURE WE HAVE A
  • 为什么此 DataAdapter 不将行插入数据库?

    因此 我遇到了一种情况 我使用 SqlDataAdapter 将行插入 SQL Server 2014 数据库中的表中 数据来源是 Excel 电子表格 当使用几个 For 循环以及 Columns Add 和 Rows Add 填充 Da
  • PHP Amazon S3通过URL访问私有文件

    我在用着AWS PHPsdk 将图像保存在 S3 上 文件以私密方式保存 然后 我在 Web 应用程序中使用 S3 文件 url 显示图像缩略图 但由于文件是私有的 因此图像显示为损坏 当用户单击文件名时 会打开一个模式以显示较大尺寸的文件
  • kivy自定义小部件绑定错误

    我正在尝试制作一个小俄罗斯方块游戏 用于用 kivy 学习 python 我正在尝试创建一个大小为 20 20 的自定义小部件 当我将其添加到浮动布局并运行以下代码时 我收到以下错误 Error File D OS Files worksp
  • 是否可以动态定义 _Generic 的关联列表?

    我有一个这样的模板 template h Declare a function func type void JOIN func T T t return undef T 我这样使用它来为不同类型生成相同的函数 example c defi
  • 将 powershell 控制台窗口移动到屏幕左侧的最佳方法是什么?

    尝试使用 PowerShell 脚本将当前活动的 powershell 窗口移动到屏幕左侧 我找到了这个功能 但它并没有真正提供任何示例 有趣又有趣的问题 如果你想移动窗口 你需要知道窗口句柄hWnd它的 对于控制台 您可以使用GetCon
  • 当工作表受到保护时,宏不起作用。运行宏返回运行时错误 1004

    我的工作簿中有三个工作正常的宏 但是 当我保护任何工作表时 它们会停止工作 并且我会得到一个run time error 1004 我尝试按照网上找到的两个建议进行操作 在宏代码开始处取消保护 在宏代码结束处保护 仅用户界面 但运行时错误仍
  • 在 Mathematica 中以编程方式创建多元函数

    这是从讨论中分离出来的earlier问题 假设我需要定义一个函数 f 来检查给定的图形标签是否是正确的着色 换句话说 我们为每个节点分配了一个整数 并且没有两个相邻节点得到相同的答案 例如 对于 Path 3 f 1 2 3 返回 True
  • 如何在 php 中设置迭代表的替代行颜色?

    我正在使用 PHP 并且正在迭代一个带有结果数组的表 我想向其中添加行颜色和备用行颜色 如何操作 任何建议 table cellpadding 0 cellspacing 2 width 100 class table Style Bord
  • 从存储过程刷新数据

    我有一个 C 实体框架应用程序 我正在尝试从代码运行存储过程 没问题 运行时间较长 大约 30 分钟 随着流程的进行 我将每个事务的日志写入 SQL 表 我希望从应用程序启动该过程 然后在屏幕上显示登录的最后 10 条记录 可能每 10 秒
  • 远程计算机无法连接到 Visual Studio Web 服务器

    我记得 MS 开发 Cassini 时 我相信他们将其纳入 VS 05 08 所以我认为这是 Cassini Web 服务器问题 我使用 Windows XP 和 Visual Studio 2008 当我想使用多个浏览器和多个操作系统测试
  • 在另一个批处理脚本中调用一个批处理脚本并对第一个脚本返回的值执行操作

    我有一个批处理脚本 first bat 它返回值列表和退出代码 我的任务是在另一个脚本 second bat 中调用此脚本 并仅当第一个脚本的调用未返回错误代码时才对 first bat 返回的值执行操作 我已调用first bat 并将其
  • Eclipse 错误 - 无法完成安装,因为找不到一个或多个必需项目

    昨天我将Android SDK工具更新到22 6 1 更新后 Eclipse显示以下错误 This Android SDK requires Android Developer Toolkit version 22 6 1 or above
  • python argparse store --foo=bar as args.key='foo', args.value='bar'

    我想解析一个具有互斥选项组的命令行 通常 我只会使用 foo bar这会在命名空间中产生 args foo bar 但是 由于所有这些选项都是互斥的 并且我对选项名称和传递给选项的参数都感兴趣 并且我有几个需要提供给下游的选项 所以我真正想
  • 当 Directory.GetFiles() 被拒绝访问时忽略文件夹/文件

    我试图显示在所选目录 以及可选的任何子目录 中找到的所有文件的列表 我遇到的问题是 当 GetFiles 方法遇到它无法访问的文件夹时 它会引发异常并且进程停止 如何忽略此异常 并忽略受保护的文件夹 文件 并继续将可访问的文件添加到列表中
  • 在 Python 3.7 上安装 Python.net 时出错

    我试图让 Python net pythonnet 在 Python 3 7 上工作 但在运行 setup py 时失败并出现以下错误 我假设它与路径行中缺少的条目有关 但我无法对它进行任何引用 它基本上是 Windows 7 上 Pyth
  • 如何更改 JavaScript 中的日期格式[重复]

    这个问题在这里已经有答案了 可能的重复 在 JavaScript 中设置日期格式 我有这个 HTML Start Date
  • JPA继承

    您好 我是 JPA 新手 我无法理解它如何处理继承 我有一个需要在不更改数据库方案的情况下解决的特定问题 但如果您找不到解决方案 我将不胜感激使用不同数据库方案的解决方案建议 欢迎 Hibernate TopLink 解决方案 如果我不清楚
  • 如何正确初始化 QWizard 页面?

    我在将数据从 QWizard 页面发送到下一页时遇到问题 我正在使用一个变量my nameQWizard 对象作为容器 我的方法是 每当我更改 QLineEdit 的文本时Page1 变量my name我的 QWizard 对象发生了变化