python - pygtk 居中对话框按钮

标签 python dialog pygtk

我正在使用 pygtk 对话框,我添加了一个按钮,现在我想控制按钮的位置。例如将它居中。

这是我的代码:

import pygtk
pygtk.require('2.0')
import gtk

dlg = gtk.Dialog('Marker Label')
dlg.set_size_request(350, 300)
dlg.show()

entry = gtk.Entry()
entry.show()
entry.set_activates_default(gtk.TRUE)
dlg.vbox.pack_start(entry)

# Create a centering alignment object
align = gtk.Alignment(0.5, 0.5, 0, 0)

button = dlg.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)

align.add(button)
dlg.vbox.pack_start(align, False, False, 5)
dlg.set_default_response(gtk.RESPONSE_OK)
response = dlg.run()

if response == gtk.RESPONSE_OK:
    label = entry.get_text()
    print label
dlg.destroy()

我收到这条消息:

test.py:19: GtkWarning: Attempting to add a widget with type GtkButton to a container of type GtkAli gnment, but the widget is already inside a container of type GtkHButtonBox, the GTK+ FAQ at http://library.gnome.org/devel/gtk-faq/stable/ explains how to reparent a widget. align.add(button)

最佳答案

如其所说,问题在于 dlg.add_button() 返回的按钮已经有一个父级 - 即对话框底部的水平按钮框。

您可以按照常见问题解答 - 在尝试将按钮添加到您的 vbox 之前从 HButtonBox 中删除该按钮。 (提示:无论哪种方式,我真的认为您想在将对话框设置为可见之前完成所有这些操作)。看起来 hbox 被称为“action_area”。也许 dlg.action_area.remove(button)

或者您可以自己创建按钮。不要使用 dlg.add_button(),而是使用 gtk.button_new_from_stock(gtk.STOCK_OK)。

[但我不是 Gtk 程序员,我不知道在这两种情况下事件处理是如何工作的。 IE。我不知道当您按下按钮时,这些中的任何一个是否仍会关闭对话框,或者您是否必须添加更多内容才能做到这一点。 Gtk 文档确实给我这样的印象...]

关于python - pygtk 居中对话框按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11591119/

相关文章:

python - 如何获得 gtkDialog 对空格键触发的默认响应

python - 如何在笔记本选项卡pygtk中获取输入字段作为密码(*)

python - 确定 TreeView 行的高度

python - social.actions.do_complete 在 python-social-auth 中不起作用

javascript - 单击对象时显示信息的方式

java - 在Android中如何在对话框中设置图像?

c++ - GetOpenFileName 对话框和 opencv 的奇怪行为

python - 对 Python GUI 应用程序进行单元测试的推荐方法是什么?

python - 在 pandas df 中提取带有包含空格的子字符串的行

python - 将鼠标悬停在饼图上时更改饼图的颜色