在Linux上安装Gtk 3.0时依赖问题
我在用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 个回答
我找到了问题。如果有人遇到类似的情况,确保他们已经安装了所有的包,并且一切都更新到最新,且在使用PyCharm,那么问题可能出在你在PyCharm环境中使用的解释器上。
在我的情况下,它没有正确识别Gtk。我不知道这是否是因为PyGobject有问题,或者是我缺少某个gcc包,导致它无法使用这个库(这是我理解的情况)。
无论如何,如果你在系统中已经安装了相关的包,比如我在Linux上遇到的情况,而你在PyCharm中遇到问题,解决办法就是使用系统的解释器,而不是虚拟环境。我是在这个链接中找到的解决方案。
https://www.reddit.com/r/pycharm/comments/ouuo4d/how_can_i_get_pycharm_to_recognise_gtk_code/
试着安装GTK3的系统库:
sudo apt install libgtk-3-dev