0

关于如何传递一个变量,特别是最近访问的 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

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

    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对话框代码中的一个类,它将在Pointsui中显示成员的信息。但是返回的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

4

1 回答 1

0

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

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

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

于 2014-06-05T15:20:14.183 回答