有什么好方法可以使一个充满标签的表格可编辑/可选择?

2024-09-29 09:36:45 发布

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

我有一个GtkTable,其中包含它显示的几个GtkLabel数据。这些标签可以设置格式(例如对齐、填充、前景色)。 表的外观示例:

The Display---a GtkTable filled with GtkLabels

此表中的每一行信息都显示在附加到您看到的表的GtkLabel中。现在,我试图让数据是可选择的,并且可能是可编辑的。考虑到数据分布在多个小部件中(每个小部件都在自己的GtkLabel中),而且似乎没有任何方法可以在多个小部件之间选择文本,这似乎并不容易。我想出了自己解决这个问题的办法:

本质上,我将GtkTable打包到GtkEventBox中,这样我就可以在表上注册事件,而且,在eventbox(好吧,它的子VBox)中打包的是一个GtkTextView,它包含与GtkTable中相同的文本(未格式化)。这个textview将作为我想要从表中编辑和选择的区域。为了实现这个功能,我将表和textview的可见性保持在相反的位置……因此,在包装盒中,它们看起来是切换“模式”的同一个小部件。在

文本视图:

The Editable--A GtkTextView containing the same text as in the Display

因此,通过这种可见性切换,我可以将一些信号附加到事件框中,比如,按钮按下/释放事件,并集中输入/输出类型的事件,以获得表的所需模式。在

一些示例代码可以更好地理解:

eventbox = gtk.EventBox()
vbox = gtk.VBox()
table = gtk.Table() #Create the table, and fill it with labels
textview = gtk.TextView() #Create the textview, and set its textbuffer to the same data as the table

eventbox.add(vbox)
vbox.pack_start( table )
vbox.pack_start( textview )
eventbox.connect( "button-release-event", toggle_mode )
textview.connect( 'focus-out-event', toggle_mode )

def toggle_mode( widget, event ):
    if table.get_visible():
        table.set_visible( False )
        textview.set_visible( True )
    else:
        table.set_visible( True )
        textview.set_visible( False )

所以,我的问题是:这是实现我想要的目标的好方法吗?有没有人有其他的经验或更好的方法来做这件事?最终,我希望有一个格式良好的文本,就像GtkTable填充了格式化的GtkLabel的外观一样,但是可以选择一个文本块作为一个部分。如何做到这一点?在


Tags: the方法文本eventgtk部件table事件
1条回答
网友
1楼 · 发布于 2024-09-29 09:36:45

我建议所有的东西都使用GtkTextView,但是如果你坚持用GtkLabel来做外观,那么你的方法和其他方法一样好(另一种流行的方法是使用隐藏标签的GtkNotebook)。在

不过,您仍然需要一个视觉指示来告诉用户他们可以编辑文本。也许是一个开关按钮。在

相关问题 更多 >