【问题标题】:AttributeError when trying to set a window type hint with GTK using Python尝试使用 Python 使用 GTK 设置窗口类型提示时出现 AttributeError
【发布时间】:2016-08-31 21:52:27
【问题描述】:

我对 python 还是很陌生,所以这可能是一个愚蠢的问题。

我正在尝试学习如何使用 pygtk 制作 GUI(主要是因为我使用 linux 并且我希望在我的程序中支持 GTK 主题)。我从最简单的窗口开始,我发现由于我使用的是平铺窗口管理器,程序将被平铺。

这不是问题,但我想制作的第一个程序需要一个浮动窗口,我可以在客户端修改窗口管理器的配置来修复它,但我想把它做对并制作它为所有人工作。

After some research我发现这样做的方法是设置一个窗口类型提示,窗口管理器将自动设置为“浮动”。这是我尝试过的,使用this 作为资源:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
win.set_type_hint(Gtk.gdk.WINDOW_TYPE_HINT_UTILITY)
win.show_all()
Gtk.main()

但它不起作用。我得到了回溯。

Traceback (most recent call last):
  File "/mnt/storHDD/Programming/Python/python-learning/guitesting.py", line 7, in <module>
    win.set_type_hint(Gtk.gdk.WINDOW_TYPE_HINT_UTILITY)
  File "/usr/lib/python3.5/site-packages/gi/overrides/__init__.py", line 39, in __getattr__
    return getattr(self._introspection_module, name)
  File "/usr/lib/python3.5/site-packages/gi/module.py", line 139, in __getattr__
    self.__name__, name))
AttributeError: 'gi.repository.Gtk' object has no attribute 'gdk'

我真的不知道从这里做什么。我也尝试过导入 gdk,但它似乎并没有改变任何东西。知道我可以做些什么来解决这个问题吗?

【问题讨论】:

  • pygtk 不是 Gtk3。每当您看到 pygtk 代码时,它可能已经过时并且无法与 Gtk3 一起使用。 gtk.gdk 就是一个例子。
  • 对不起,我没有。不过感谢您的回答。因为根据 Rawing,这是因为 pygtk 已经过时了,有没有更好的方法来做事?
  • 这对我来说似乎很完美!

标签: python user-interface gtk


【解决方案1】:

你需要导入Gdk,然后使用Gdk.WindowTypeHint.UTILITY,而不是Gtk.gdk.WINDOW_TYPE_HINT_UTILITY

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
win.set_type_hint(Gdk.WindowTypeHint.UTILITY)
win.show_all()
Gtk.main()

另见here

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多