如何将(Postgresql)数据输入GTK输入字段?

2024-06-26 00:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试设置一个python3程序来显示和编辑Postgresql数据库中的数据。所附的代码是一个简化的“硬编码”示例,我正在尝试(实际上使用等效的Gtk建造者结构。) 如果没有“设置文本”指令,Vcard窗口的显示方式完全符合我的要求。在

以下是追溯:

$ python3 Q1.py
Database connection closed.
Record(vindex=5, prefix='Mrs D ', firstname='Nona', addnlnames=None, surname='***', suffix=None, nickname=None, kind='private', bday=None, anniversary=None, gender=None, workpobox=None, workaddr2=None, workaddr=None, workcity=None, workstate=None, workpostcode=None, workcountry=None, homepobox=None, homeaddr2=None, homeaddr='********', homecity='****', homestate=None, homepostcode='BT** ***', homecountry='N Ireland', worktel=None, hometel='02870 ******', faxtel=None, pagertel=None, mobiletel='07931 ******', email1=None, email2=None, title=None, workrole=None, workdept=None, workorg=None, rev=None, notes=None, webpage=None, orgwebpage=None)
Traceback (most recent call last):
  File "Q1.py", line 92, in <module>
    y = displaydata(x)
  File "Q1.py", line 81, in displaydata
    Vcard.prefixentry.set_text(xstr(c['prefix']))
AttributeError: type object 'Vcard' has no attribute 'prefixentry'

代码如下:

^{pr2}$

非常感谢您的意见 格雷姆


Tags: 代码inpy程序none编辑prefixpostgresql
1条回答
网友
1楼 · 发布于 2024-06-26 00:15:52

这里有一个基本的应用程序,让你开始。在

Python:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GdkPixbuf, Gdk
import os, sys, psycopg2

class GUI:
    def __init__(self):

        self.builder = Gtk.Builder()
        self.builder.add_from_file('app.ui')
        self.builder.connect_signals(self)

        try:
            conn = psycopg2.connect("dbname='contacts' user='postgres'")
            self.cur = conn.cursor(cursor_factory = psycopg2.extras.NamedTupleCursor)
        except Exception, e:
            print e

        window = self.builder.get_object('window')
        window.show_all()

    def on_window_destroy(self, window):
        Gtk.main_quit()

    def button_clicked (self, button):
        self.cur.execute("SELECT * from vcardata where surname = %s", [lastname])
        cc = self.cur.fetchone()[0]
        self.builder.get_object('entry1').set_text(str(cc))

def main():
    app = GUI()
    Gtk.main()

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

名为app.ui的Glade文件:

^{pr2}$

如果你不明白的话,可以要求解释

相关问题 更多 >