首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中使用Glade 3.12小部件

在python中使用Glade 3.12小部件
EN

Stack Overflow用户
提问于 2012-09-30 14:21:19
回答 3查看 1.8K关注 0票数 1

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

我从一些基本的东西开始,我有一个按钮,一个Gtkentry和gtktextview这是我想要完成的:

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

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

到目前为止我的代码如下:

代码语言:javascript
复制
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中的任何内容,但我找不到如何将其附加到文本视图中。我也不确定要搜索什么才能找到文档,我尝试了"gtk builder gtk.textview“和”pygtk build gtk.textview append“以及所有其他变体。

虽然知道如何简单地将文本添加到文本视图中将是很棒的,但如果有一个链接到某个地方,我可以用简单的英语获得如何使用这些小部件的链接,我将永远感到非常满意。

EN

回答 3

Stack Overflow用户

发布于 2012-09-30 14:45:35

gtk.TextView中,您需要使用textview的buffer属性来获取gtk.TextBuffer

在textbuffer中,您需要使用get_end_iter方法获取指向缓冲区末尾的迭代器。有了这个迭代器和文本,就可以使用textbuffer的insert方法了。

编辑:由于我没有dagui.glade文件,所以无法对其进行测试,但请参阅以下代码:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-09-30 22:41:48

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

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

代码语言:javascript
复制
#!/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()
票数 0
EN

Stack Overflow用户

发布于 2012-09-30 14:35:57

使用此命令添加文本:

代码语言:javascript
复制
textarea.set_text('whatever you want')

这是为了添加pango标记( http://goo.gl/94Pkk ):

代码语言:javascript
复制
textarea.set_markup('<span size="large>Example</span>')

下面是文档:http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12659161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档