【问题标题】:Passing of a variable (an ID) to another compiled UI in pyqt在 pyqt 中将变量(一个 ID)传递给另一个编译的 UI
【发布时间】:2011-07-07 21:00:07
【问题描述】:

我已经为如何传递一个变量(特别是最近访问的 sqlite 中的 ID)以用于生成的另一个 UI 感到困惑了一个多小时。我正在使用 eric4(带有 python、pyqt、qtdesigner 和 sqlite)。

基本上,我正在编写的程序会生成成员,并且在生成成员信息时,每个成员都有一个唯一的 ID。当有一个新成员时,分配给新成员的 ID 必须传递给程序的另一部分。但也有必须对会员进行修改的情况,必须知道ID才能显示会员的权限信息。

基本上,当添加一个新成员时,它首先输入数据库中的信息。我在名为 newmember.py 的 ui 的对话框代码中所做的是这样的:

def on_button_Save_released(self):
    Nik = unicode(self.LineEdit_Nickname.text())
    self.NMem = NewMem()
    self.NMem.input_data(Nik)
    self.close()

NewMem 是另一个 py 文件中的一个类,它可以访问数据库。 input_data 方法的部分内容如下所示:

    cur.execute("insert into Members (Nick) values (?)",(Nik))

我添加了这段代码,以便它知道分配给新成员的 ID::

    CurrentID = cur.lastrowid
    return CurrentID

所以我将ui对话框代码newmember.py中的这一行self.NMem.input_data(Nik)改成了这个

    ID = self.NMem.input_data(Nik)

这样ID就会被传递。

现在,对话框代码将打开另一个窗口,我希望将返回的 ID 用于另一个 ui。基本上newmember.py中的ui对话框代码中的整个方法是这样的:

def on_button_Save_released(self):
    Nik = unicode(self.LineEdit_Nickname.text())
    self.NMem = NewMem()
    ID = self.NMem.input_data(Nik)
    self.close()

    self.Pts = Points()
    self.Pts.show()

Points() 是另一个ui 对话框代码中的一个类,它将在Points ui 中显示成员的信息。但是返回的ID 信息必须传递给Points() ui,这样才能显示正确的信息。我有一种预感,我需要更改编译后的 ui 表单中的某些部分,以便它知道要显示的 ID,但我将如何在编译后的 ui 表单中传递它?

非常感谢任何帮助深深鞠躬

编辑:这段代码有没有办法 -

    self.Pts = Points()
    self.Pts.show()

变量ID是否也被合并并传递到ui中?喜欢

    self.Pts = Points
    self.Pts.show(ID)

ID 也会转到 ui 吗?

Edit2: 有没有办法在 python 的 ui 类中传递变量,就像这里显示的一样 - http://www.daniweb.com/forums/thread64758.html

【问题讨论】:

  • 不确定我是否了解整个概念,但也许您想了解在 Designer 中推广您的课程是否能让您有所收获。让它与 PyQt 一起工作有点时髦,但我发现它非常有用。
  • 嗯......现在我重新阅读了我的帖子,这有点tl;博士 - 好吧,基本上,我想要一个值(ID)中的一个值将取决于一个ui。我对如何将值传递给 ui ._ 感到困惑。编辑:有没有办法让 self.Pts.show() 也输入一个变量?我不知道你为什么会看到(也在编辑主要问题)
  • 您能否将 Points 类的实现添加到问题中?

标签: python sqlite pyqt qt-designer


【解决方案1】:

我相信使用带有 QDataWidgetMapper 的 Qt 模型是解决此问题的 Qt 方法。 An example here。 (如果您想自己编程数据库通信,则为 QSLTableModel 或子类 QAbstractTableModel)。

您还可以查看 Qt 文档中的 SQL Widget 映射器示例。

我个人更喜欢使用自定义模型,因为我之前偶然发现了使用 Qt 的 SQL 的部署问题,但你的情况可能会有所不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 2018-02-05
    • 2021-11-10
    • 2015-05-22
    • 2014-04-02
    • 1970-01-01
    • 2021-09-28
    相关资源
    最近更新 更多