如何正确销毁 gtk.Dialog 对象/小部件

发布于 2024-08-15 09:13:20 字数 453 浏览 2 评论 0原文

Noob @ 使用 python 和 pygtk 编程。

我正在创建一个应用程序,其中包含几个用于用户交互的对话框。

#!usr/bin/env python
import gtk
info = gtk.MessageDialog(type=gtk.DIALOG_INFO, buttons=gtk.BUTTONS_OK)
info.set_property('title', 'Test info message')
info.set_property('text', 'Message to be displayed in the messagebox goes here')
if info.run() == gtk.RESPONSE_OK:
    info.destroy()

这将显示我的消息对话框,但是,当您单击对话框中显示的“确定”按钮时,什么也没有发生,该框只是冻结。 我在这里做错了什么?

Noob @ programming with python and pygtk.

I'm creating an application which includes a couple of dialogs for user interaction.

#!usr/bin/env python
import gtk
info = gtk.MessageDialog(type=gtk.DIALOG_INFO, buttons=gtk.BUTTONS_OK)
info.set_property('title', 'Test info message')
info.set_property('text', 'Message to be displayed in the messagebox goes here')
if info.run() == gtk.RESPONSE_OK:
    info.destroy()

This displays my message dialog, however, when you click on the 'OK' button presented in the dialog, nothing happens, the box just freezes.
What am I doing wrong here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

芸娘子的小脾气 2024-08-22 09:13:20

@毫克
我的不好。您的代码是正确的(我想我最初的代码也是正确的)
我的对话框保留在屏幕上的原因是因为我的 gtk.main 循环在单独的线程上运行。

所以我所要做的就是将你的代码(我的更正版本)放在 a

gtk.gdk.threads_enter()

和 a

gtk.gdk.threads_leave()

之间,然后它就在那里。
感谢您的回复。

@mg
My bad. Your code is correct (and I guess my initial code was too)
The reason my dialog was remaining on the screen is because my gtk.main loop is running on a separate thread.

So all I had to was enclose your code (corrected version of mine) in between a

gtk.gdk.threads_enter()

and a

gtk.gdk.threads_leave()

and there it was.
Thanks for your response.

铁轨上的流浪者 2024-08-22 09:13:20

你能给我最后一次机会吗? ;)

您的代码中存在一些错误:

  • 您没有关闭括号

  • .set_property中的语法错误:使用:< code>.set_property('property', 'value')

但我认为它们是复制/粘贴错误。

试试这个代码,它对我有用。也许您忘记了 gtk.main() ?

import gtk

info = gtk.MessageDialog(buttons=gtk.BUTTONS_OK)
info.set_property('title', 'Test info message')
info.set_property('text', 'Message to be displayed in the messagebox goes here')
response = info.run()
if response == gtk.RESPONSE_OK:
    print 'ok'
else:
    print response
info.destroy()

gtk.main()

can you give me a last chance? ;)

there are some errors in your code:

  • you did not close a bracket

  • your syntax in .set_property is wrong: use: .set_property('property', 'value')

but i think they are copy/paste errors.

try this code, it works for me. maybe did you forget the gtk.main()?

import gtk

info = gtk.MessageDialog(buttons=gtk.BUTTONS_OK)
info.set_property('title', 'Test info message')
info.set_property('text', 'Message to be displayed in the messagebox goes here')
response = info.run()
if response == gtk.RESPONSE_OK:
    print 'ok'
else:
    print response
info.destroy()

gtk.main()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文