在python中使用Glade 3.12小部件

在python中使用Glade 3.12小部件,python,pygtk,glade,Python,Pygtk,Glade,正如一些历史一样,我已经使用python大约5年了,最终决定在Glade中制作我的第一个gui应用程序 我从一些基本的东西开始,我有一个按钮,一个Gtkentry和gtktextview 这就是我努力实现的目标: 按下按钮时,从gtk.entry中提取文本并将其附加到gtk.textview中 现在我面临的主要问题是,我找不到关于如何使用这些小部件的下降文档,我在互联网上找到的示例既引用了一个构建器变体,也引用了另一个glade项目变体,我只能假设它已经停止。我想了解builder如何适应pyt

正如一些历史一样,我已经使用python大约5年了,最终决定在Glade中制作我的第一个gui应用程序

我从一些基本的东西开始,我有一个按钮,一个Gtkentry和gtktextview 这就是我努力实现的目标:

按下按钮时,从gtk.entry中提取文本并将其附加到gtk.textview中

现在我面临的主要问题是,我找不到关于如何使用这些小部件的下降文档,我在互联网上找到的示例既引用了一个构建器变体,也引用了另一个glade项目变体,我只能假设它已经停止。我想了解builder如何适应python/glade协作

到目前为止,我的代码是:

import gtk
import pygtk

def onDeleteWindow(self, *args):
    Gtk.main_quit(*args)

def hello(button):
    text_buffer.set_text(txtinput.get_text())



builder = gtk.Builder()
builder.add_from_file("dagui.glade")

handlers = {
    "onDeleteWindow": gtk.main_quit,
    "buttondown": hello
}
builder.connect_signals(handlers)

textarea = builder.get_object("textview1")
window = builder.get_object("window1")
txtinput = builder.get_object("entry1")
window.show_all()

gtk.main()
window.show_all()

gtk.main()
现在,这一切的工作和按下按钮将打印什么是曾经在gtk.entry,但我找不到如何附加到textview。我也不确定要搜索什么来查找文档,我尝试了“gtk builder gtk.textview”和pygtk build gtk.textview append”以及所有其他变体

虽然知道如何简单地将文本添加到文本视图会很好,但是如果有一个链接,我可以用简单的英语找到如何使用这些小部件的地方,我将永远非常完整。

使用此添加文本:

textarea.set_text('whatever you want')
下面是添加pango标记()的步骤:

textarea.set_标记('Frob),您需要使用textview的
buffer
属性获取

从textbuffer中,您需要使用该方法获取指向缓冲区末尾的迭代器。使用该迭代器和您的文本,您可以使用textbuffer的方法

编辑:因为我没有
dagui.glade
文件,所以无法测试它,但可以看到以下代码:

def hello(button):
    global textarea, txtinput
    buffer = textarea.get_property('buffer')
    i = buffer.get_end_iter()
    buffer.insert(i, txtinput.get_text())
    # clear the input window after appending the text
    txtinput.set_text('')

我弄明白了,我发现gtk.textview.get_buffer实际上设置了缓冲区ID,然后textview.set_text(buffer)就是我所需要的

这是完整的工作代码,glade只是一个按钮、一个条目和一个文本视图:

#!/usr/bin/python

import os
import sys
import gtk
import pygtk

def onDeleteWindow(self, *args):
    Gtk.main_quit(*args)

def hello(button):
    textbuffer = textarea.get_buffer()
    textbuffer.set_text(txtinput.get_text())



builder = gtk.Builder()
builder.add_from_file("dagui.glade")

handlers = {
    "onDeleteWindow": gtk.main_quit,
    "buttondown": hello
}
builder.connect_signals(handlers)

textarea = builder.get_object("textview1")
window = builder.get_object("window1")
txtinput = builder.get_object("entry1")
window.show_all()


gtk.main()

gtk.TextView
没有
set_text
方法,AFAICT.Roland是正确的,我已验证它没有:AttributeError:'gtk.TextView'对象没有属性'set_text'
#!/usr/bin/python

import os
import sys
import gtk
import pygtk

def onDeleteWindow(self, *args):
    Gtk.main_quit(*args)

def hello(button):
    textbuffer = textarea.get_buffer()
    textbuffer.set_text(txtinput.get_text())



builder = gtk.Builder()
builder.add_from_file("dagui.glade")

handlers = {
    "onDeleteWindow": gtk.main_quit,
    "buttondown": hello
}
builder.connect_signals(handlers)

textarea = builder.get_object("textview1")
window = builder.get_object("window1")
txtinput = builder.get_object("entry1")
window.show_all()


gtk.main()