0

生成された別の UI に使用する変数、特に最近アクセスした s​​qlite の ID を渡す方法について 1 時間以上困惑しました。私は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()

これは、メンバーの情報を UI にPoints()表示する別の UI ダイアログ コードのクラスです。ただし、正しい情報が表示されるようにPoints、返さIDれた情報を UI に渡す必要があります。Points()表示されることを認識できるように、コンパイルされた ui フォームの一部を変更する必要があるという予感がありますが、コンパイルされた ui フォームでそれIDを渡すにはどうすればよいですか?

どんな助けでも大歓迎です深くお辞儀をします

編集:このコードに方法はありますか -

    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 ウィジェット マッパーの例を確認することもできます。

個人的には、Qt の SQL を使用して展開の問題に遭遇したことがあるので、カスタム モデルを使用することを好みますが、マイレージは異なる場合があります。

于 2014-06-05T15:20:14.183 に答える