2011-03-03 103 views
0

对于如何传递一个变量,特别是最近访问过的sqlite中的ID,我被搁置了一个多小时才被用于另一个UI产生。我使用eric4(使用python,pyqt,qtdesigner和sqlite)。将变量(ID)传递给pyqt中的另一个编译后的UI

基本上,我编码的程序使成员和每个成员在生成成员信息时都有唯一的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改变了这一行self.NMem.input_data(Nik)对话框代码newmember.py

这样就可以传递ID了。

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

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()是在另一个用户界面对话框的代码将在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

+0

不知道如果我得到整个概念,但也许你想看看,如果在设计师中促进你的课程让你在任何地方。 使它与PyQt一起工作有点时髦,但我发现它非常有用。 – aukaost 2011-03-05 02:00:08

+0

嗯...现在我重读了我的文章,这是一个tl;博士 - 好吧,基本上,我想从一个值(ID)的值将取决于显示一个用户界面。我很难理解如何将价值传递给用户。编辑:有没有一种方法,self.Pts.show()也会输入一个变量?我不知道你为什么看到(也是编辑主要问题) – hyoumoku 2011-03-05 03:53:55

+0

你可以将你的Points类的实现添加到问题中吗? – aukaost 2011-03-06 01:17:56

回答

0

我相信使用Qt的模型与QDataWidgetMapper是Qt的方式解决这个问题。 An example here。(如果您想自己编写数据库通信,则使用QSLTableModel或QAbstractTableModel的子类)。

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

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

相关问题