Linux下Gtk 3.0依赖安装后运行代码遇AttributeError问题求助
解决Gtk模块AttributeError: 'Gtk' has no attribute 'Window'问题
问题背景
在PyCharm中开发基于Gtk的Python应用,最初安装依赖时遇到报错,提示需安装Cairo相关组件,于是安装了以下系统包:
sudo apt-get install libcairo2-devsudo apt-get install build-essentialsudo apt-get install python3-devsudo apt install libgirepository1.0-dev
安装后PyCharm的包检测无报错,但运行测试代码时触发以下错误:
AttributeError: type object 'Gtk' has no attribute 'Window'
完整错误日志:
home/user/PycharmProjects/tfg/.venv/bin/python /home/user/PycharmProjects/work/prueba.py Traceback (most recent call last): File "/home/user/PycharmProjects/work/prueba.py", line 7, in class MyWindow(Gtk.Window): AttributeError: type object 'Gtk' has no attribute 'Window' Process finished with exit code 1
测试代码:
import gi #gi.require_version("Gtk", "3.0") from gi.repository import Gtk class MyWindow(Gtk.Window): def __init__(self): super().__init__(title="Hello World") self.button = Gtk.Button(label="Click Here") self.button.connect("clicked", self.on_button_clicked) self.add(self.button) def on_button_clicked(self, widget): print("Hello World") def main(): win = MyWindow() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main() if __name__ == "__main__": main()
解决方法
1. 启用Gtk版本指定
错误的核心原因是未明确指定Gtk版本,导致gi无法正确加载对应库。取消代码中版本指定行的注释:
import gi gi.require_version("Gtk", "3.0") # 取消此注释 from gi.repository import Gtk
这是PyGObject的强制要求,必须在导入Gtk前调用gi.require_version,避免版本冲突。
2. 确认系统Gtk依赖
若仍报错,检查系统是否安装了对应版本的Gtk开发包:
# 针对Gtk 3.0 sudo apt install libgtk-3-dev # 若使用Gtk 4.0,替换为 sudo apt install libgtk-4-dev
3. 验证虚拟环境依赖
确保虚拟环境中已安装PyGObject(Python绑定Gtk的核心包):
pip install pygobject
内容的提问来源于stack exchange,提问作者Rainor
相关产品推荐
相关产品推荐

