首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在退出函数之前,FileChooserDialog不会关闭。- Python GTK

在退出函数之前,FileChooserDialog不会关闭。这是因为FileChooserDialog是一个模态对话框,它会阻塞程序的执行,直到用户选择了文件或关闭了对话框。

要关闭FileChooserDialog,可以使用destroy()方法。这个方法会销毁对话框并释放相关资源。在退出函数之前调用destroy()方法可以确保对话框被关闭。

以下是一个示例代码:

代码语言:txt
复制
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

def on_button_clicked(button):
    dialog = Gtk.FileChooserDialog("Please choose a file", None,
        Gtk.FileChooserAction.OPEN,
        (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
         Gtk.STOCK_OPEN, Gtk.ResponseType.OK))

    response = dialog.run()
    if response == Gtk.ResponseType.OK:
        print("File selected: " + dialog.get_filename())

    dialog.destroy()

win = Gtk.Window()
button = Gtk.Button(label="Open File")
button.connect("clicked", on_button_clicked)
win.add(button)
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

在这个例子中,当用户点击按钮时,会创建一个FileChooserDialog,并等待用户选择文件或关闭对话框。如果用户选择了文件,会打印文件路径。无论用户选择了文件还是关闭了对话框,最后都会调用destroy()方法关闭对话框。

对于Python GTK开发,推荐使用腾讯云的云原生产品,如腾讯云容器服务(TKE)和腾讯云函数计算(SCF)。这些产品提供了强大的云原生能力,可以帮助开发者快速构建和部署云原生应用。您可以在腾讯云官网了解更多关于TKE和SCF的信息:

  • 腾讯云容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云函数计算(SCF):https://cloud.tencent.com/product/scf
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux上为你的任务创建一个自定义的系统托盘指示器

gtk.main() :运行 GTK 主循环。 menu() 中我们定义了想要指示器提供的行为或项目。...exittray 相关的行是为了创建一个退出的菜单项,以便让你在想要的时候关闭指示器。 menu.show_all() 以及 return menu 只是返回菜单项给指示器的常规代码。...这里只是 os.system("gedit $HOME/Documents/notes.txt") 这一句话; os.system 函数允许你 Python 中运行 shell 命令,因此这里我们写了一行命令来使用...但是要小心,需要用其他命令来替换 command_two ,比如 command_three ,这样变量之间才不会产生冲突。然后定义新函数,就像 play(_) 函数那样。...比如 Steam 上的 CS:GO 退出很费时间(窗口并不会自动关闭),因此,作为一个变通的方法,我只是最小化窗口然后点击某个自建的菜单项,它会执行 killall -9 csgo_linux64 命令

1.9K41
  • Python GTK+ 3 中创建一个框

    关于 GTK+ 3 库 它是一个跨平台的图形用户界面 (GUI) 工具包。桌面应用程序是主要用例,它也支持升级。提供多种编程语言,包括 Python。 由多个小部件(按钮、标签和输入字段)提供支持。...要在 Python 中制作框布局,请导入模块并配置 GTK+ 库。... __init__ 方法中,初始化窗口并设置其标题、默认大小,并将“destroy”信号连接到Gtk.main_quit以处理窗口关闭。...“销毁”信号与 Gtk.main 退出功能耦合,以实现窗口的正常关闭。水平 GTK。hbox 容纳水平小部件,而垂直 Gtk Box vBox 容纳垂直小部件。...Gtk.main() 启动主 GTK 循环,该循环处理用户交互和事件。 输出具有一个自定义窗口,其中水平 Gtk 标签以框样式分组。垂直 GTK 框,并排有两个标签。两个标签分层一个框的顶部。

    32910

    Glib之主事件循环

    新类型的事件源可以通过g_source_attach()函数添加。 为了让多组独立事件源能够不同的线程中被处理,每个事件源都会关联一个GMainContext。...Idle函数没有更高优先级的事件被处理的时候才会执行。 GMainLoop数据类型代表了一个主事件循环。 通过g_main_loop_new()来创建GMainLoop对象。...添加完初始事件源后执行g_main_loop_run(),主循环将持续不断的检查每个事件源产生的新事件,然后分发它们,直到处理来自某个事件源的事件的时候触发了g_main_loop_quit()调用退出主循环为止...GTK+对这些函数做了些封装,例如gtk_main、gtk_mian_quit和gtk_events_pending。...GTK+应用中,一个线程使用多个main loop的主要用途是实现模态对话框,它在gtk_dialog_run函数里创建一个新的main loop,通过该main loop分发消息,直到对话框关闭为止

    1.6K30

    如何在Linux桌面下使用PyGObject创建GUI应用程序

    你可能需要像一些免费的课程,codeacademy.com或者你可以阅读Python的一些书: 关于GTK + GTK +是一个开源的跨平台工具包来创建桌面应用程序,它在1998年首次开始作为一个...GTK +是根据LGPL许可证发布的。 Linux下创建GUI应用程序 使用GTK +和Python创建应用程序有2种方法: 仅使用代码编写图形界面。...的/ usr / bin中/ Python的 :对Python解释器(2.7版本大多数情况下)的默认路径,这条线必须在每个Python文件的第一行。...window.connect(“删除事件”,Gtk.main_quit):现在我们连接的“Gtk.main_quit”操作“删除事件”的信号,这是重要的,以便删除所有的部件我们关闭后,我们的程序窗口。...点击“ 文件 ”菜单,选择“ 保存 ”,将文件保存在名为“myprogram.glade”,退出你的home目录。

    3.8K30

    matplotlib - matplotlib 教程

    如果是 “类数组(array-like)” 对象(如pandas数据对象和np.matrix)可能会或可能不会按预期工作。最好在绘图之前将它们转换为np.array对象。...() 函数,则必须在输入 matplotlib.pyplot 之前完成此操作。...无论是脚本还是shell中,绘图命令流的中间打开和关闭交互模式很少需要并且可能令人困惑,因此在下文中我们将假设所有绘图都是以交互模式打开或关闭。...第一个地块关闭后,将显示第二个地块。 摘要 交互模式下,pyplot功能会自动绘制到屏幕上。...交互式绘制时,如果除了pyplot函数之外还使用对象方法调用,则只要想要刷新绘图,就调用draw() 。 在要生成一个或多个图形的脚本中使用非交互模式,并在结束或生成一组新图形之前显示它们。

    4.6K31

    Python: Cant pop from an empty list

    Python 中,如果尝试从一个空列表中弹出(pop)元素,会引发 IndexError 异常。这是因为 pop() 方法试图移除并返回列表中的最后一个元素,但在列表为空时无法执行此操作。...具体步骤如下: device_connected 函数中,当设备连接时,将设备标签添加到 Welcome.dev_label 列表。... Exchange 类中,尝试从 Welcome.dev_label 列表中弹出元素之前,检查该列表是否为空。如果为空,则等待直到列表中有元素后再弹出。...()gtk.main()修改后的程序确保在从 Welcome.dev_label 列表中弹出元素之前,已经将设备标签添加到该列表中,从而解决了 IndexError: pop from empty list...实际开发中,确保操作列表之前检查其状态是一个良好的实践,能够防止许多潜在的错误。使用 try-except 块则是处理异常情况的一种有效方法,能够使程序更健壮并且具有容错能力。

    7710

    调试HotSpot源代码(配视频)

    之前的文章Ubuntu 16.04上编译OpenJDK8的源代码 已经介绍过Ubuntu上编译OpenJDK8的源代码,这一篇将介绍Ubuntu上调试OpenJDK8源代码的2种方式。...java.c的JavaMain函数入口处设置断点;第二条命令表示让中断的程序继续运行,直到运行完程序后退出GDB,并在终端打印”Hello World!...n) 执行下一行语句 print(p) 打印表达式的值,通过表达式可以修改变量的值或者调用函数 quit(q) 退出gdb调试环境 step(s) 执行下一行语句,如果有函数调用则进入到函数中 start...开始执行程序,停在main函数第一行语句前面等待命令 break(b) 行号 指定行设置断点 break 函数指定函数的开头设置断点 break … if … 设置条件断点 continue(...命令如下:​ tar -zxvf eclipse-java-neon-3-linux-gtk-x86_64.tar.gz 在运行Eclispe之前还需要配置环境变量,如下: export JAVA_HOME

    1.4K40

    Immunity Canvas安装踩坑记录及虚拟机下载

    0x04 安装过程 下面简单写一下自己通宵肝出来的版本,之前物理机(Windows 10)、虚拟机(Windows 10)、Ubuntu 20.04搭建并没有成功,小问题居多一些。...系统安装过程不进行赘述,不会安装的请移步:百度了还不会就不用玩了,安装Ubuntu时取消勾选更新选项,安装过程会快很多。 二、备份源 安装完成以后,先不要着急安装工具,备份一下原本的源。...apt/sources.list /etc/apt/sources_init.list 三、更换源 sudo gedit /etc/apt/sources.list 我这里使用的是阿里源,更换之后保存退出...sudo apt-get -y install python-pip sudo apt-get -y install gtk2.0 sudo apt-get -y install python-glade2...Ubuntu最新版的安装过程中,python-glade2安装过不去,乖乖用回18.04。 0x06 总结 爆肝两天,测试了多个环境,总算是成功搞出来了。

    1.3K10

    一次服务器系统的恢复过程-grubx64.efi文件丢失和黑屏

    又是充当运维的一天 这天,服务器装了一个gtk3的软件,只是简单的一个 yum install gtk3 结果重启之后,卡在用户登录界面,点击用户登陆之后,不能输入密码,键盘一输入就直接黑屏,结果为了修复这个问题...,我卸载gtk3(这里应该不要卸载gtk3,可以尝试下yum update,或者在下面界面没了后尝试下yum update,我猜可能是有些不兼容,而不应该重装GNOME) yum remove gtk3...但是这个盘符是不能直接挂载的,直接挂载这个会出现错误,我发现u盘还有另一个boot的盘符/dev/sdc1/,所以挂载这个 mkdir /mnt/usb mount /dev/sdc1 /mnt/usb 然后之前损坏的系统...然后一直输入exit退出直到重启 9。...不仅没有桌面,命令行也没有,显示器直接无信号,但是远程可以连接,所以我远程连接,输入 yum update 然后重启居然奇迹般的都好了,我还做好了重装系统的准备,所以我在想如果我一开始就yum update会不会就没这么多事了

    2.4K10
    领券