在Linux上安装Gtk 3.0时依赖问题

1 投票
2 回答
34 浏览
提问于 2025-04-14 18:19

我在用PyCharm做一个Gtk的应用程序。最开始我尝试自动安装相关的包,但出现了依赖错误,系统提示我需要安装Cairo包,还有其他我不记得的东西,才能正确安装Gtk。

我不打算把所有的控制台日志都贴出来,不过如果需要的话,我可以把它们粘贴上来或者提供一个我保存的链接。

总之,在安装了这些包之后,问题解决了。

我用的命令是:

sudo apt-get install libcairo2-dev

sudo apt-get install build-essential

sudo apt-get install python3-dev

sudo apt install libgirepository1.0-dev

在这些包安装后,我在PyCharm环境中的包如下,最后终于不再出现错误了。

这里是图片描述

我的问题是,当我尝试编译一个简单的代码时,它给我报错,我不知道该怎么解决。我不确定这是Gtk的问题,还是我安装的某个东西出错,或者我缺少了什么,但我就是无法让它正常工作。

更多信息

错误信息:

home/user/PycharmProjects/tfg/.venv/bin/python /home/user/PycharmProjects/work/prueba.py
追踪(最近的调用在最后):
文件 "/home/user/PycharmProjects/work/prueba.py",第7行,
类 MyWindow(Gtk.Window):

AttributeError: 类型对象 'Gtk' 没有属性 'Window'
进程以退出代码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() ```

2 个回答

0

我找到了问题。如果有人遇到类似的情况,确保他们已经安装了所有的包,并且一切都更新到最新,且在使用PyCharm,那么问题可能出在你在PyCharm环境中使用的解释器上。

在我的情况下,它没有正确识别Gtk。我不知道这是否是因为PyGobject有问题,或者是我缺少某个gcc包,导致它无法使用这个库(这是我理解的情况)。

无论如何,如果你在系统中已经安装了相关的包,比如我在Linux上遇到的情况,而你在PyCharm中遇到问题,解决办法就是使用系统的解释器,而不是虚拟环境。我是在这个链接中找到的解决方案。

https://www.reddit.com/r/pycharm/comments/ouuo4d/how_can_i_get_pycharm_to_recognise_gtk_code/

1

试着安装GTK3的系统库:

sudo apt install libgtk-3-dev

撰写回答