就像一些历史一样,我已经使用python大约5年了,最终决定在Glade中制作我的第一个gui应用程序。
我从一些基本的东西开始,我有一个按钮,一个Gtkentry和gtktextview 这就是我想要实现的目标:
按下按钮,从gtk.entry中取出文本并将其附加到gtk.textview
现在我遇到的主要问题是我找不到如何使用小部件的下降文档,我在互联网上找到的例子既提到了构建器变体,也提到了我只能假设的另一种林地项目变体已经停产。我想了解构建器如何适应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“以及所有其他变体。
虽然知道如何简单地将文本添加到文本视图会很棒,有一个链接到我可以用普通英语获得如何使用这些小部件的地方,我会永远满满的。
答案 0 :(得分:1)
Frob gtk.TextView
,您需要使用textview的buffer
属性获取gtk.TextBuffer
。
从textbuffer中,您需要使用get_end_iter
方法获取指向缓冲区末尾的迭代器。使用该迭代器和文本,您可以使用textbuffer的insert
方法。
修改:由于我没有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('')
答案 1 :(得分:0)
我想通了,我发现gtk.textview.get_buffer实际上设置了缓冲区ID,然后textview.set_text(缓冲区)就是我需要的。
这里是完整的工作代码,glade只是一个按钮,一个条目和一个textview:
#!/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()
答案 2 :(得分:-1)
使用此选项添加文字:
textarea.set_text('whatever you want')
这用于添加pango标记(http://goo.gl/94Pkk):
textarea.set_markup('<span size="large>Example</span>')
以下是文档:http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html