尝试使用 Python 使用 GTK 设置 window 类型提示时出现 AttributeError
AttributeError when trying to set a window type hint with GTK using Python
我对 python 还是很陌生,所以这可能是一个愚蠢的问题。
我正在尝试学习如何使用 pygtk 制作 GUI(主要是因为我使用 linux 并且我希望在我的程序中支持 GTK 主题)。我从最简单的 window 开始,我发现由于我使用的是平铺 window 管理器,程序将被平铺。
这不是问题,但我想制作的第一个程序需要一个浮动 window,我可以在客户端修改 window 管理器的配置来修复它,但我想把它做对,让它为每个人服务。
After some research I've found that the way to do it is by setting a window type hint that the window manager will automatically set as "floating". This is what I've tried, using 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,但它似乎没有任何改变。知道我该怎么做才能解决这个问题吗?
您需要导入 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。
我对 python 还是很陌生,所以这可能是一个愚蠢的问题。
我正在尝试学习如何使用 pygtk 制作 GUI(主要是因为我使用 linux 并且我希望在我的程序中支持 GTK 主题)。我从最简单的 window 开始,我发现由于我使用的是平铺 window 管理器,程序将被平铺。
这不是问题,但我想制作的第一个程序需要一个浮动 window,我可以在客户端修改 window 管理器的配置来修复它,但我想把它做对,让它为每个人服务。
After some research I've found that the way to do it is by setting a window type hint that the window manager will automatically set as "floating". This is what I've tried, using 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,但它似乎没有任何改变。知道我该怎么做才能解决这个问题吗?
您需要导入 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。