<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>自动补全 on qytlix no blogs</title><link>https://blog.qyt.li/x/tags/%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8/</link><description>Recent content from qytlix no blogs</description><generator>Hugo</generator><language>en-us</language><managingEditor>qytlix@gmail.com (qytlix)</managingEditor><webMaster>qytlix@gmail.com (qytlix)</webMaster><copyright>All articles on this blog are licensed under the BY-NC-SA license agreement unless otherwise stated. Please indicate the source when reprinting!</copyright><lastBuildDate>Wed, 08 Apr 2026 11:08:03 +0800</lastBuildDate><atom:link href="https://blog.qyt.li/x/tags/%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>使用Pylance自动补全gi</title><link>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/%E4%BD%BF%E7%94%A8pylance%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8gi/</link><pubDate>Wed, 08 Apr 2026 11:08:03 +0800</pubDate><author>qytlix@gmail.com (qytlix)</author><guid>https://blog.qyt.li/x/post/tech/%E6%8A%80%E6%9C%AF/%E4%BD%BF%E7%94%A8pylance%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8gi/</guid><description>
<![CDATA[<h1>使用Pylance自动补全gi</h1><p>Author: qytlix(qytlix@gmail.com)</p>
        
          <p>#python #vscode #gnome #自动补全
本机环境<code>openSUSE Tumbleweed 20250319</code>，<code>python313</code>。</p>
<h1 id="虚拟环境">
<a class="header-anchor" href="#%e8%99%9a%e6%8b%9f%e7%8e%af%e5%a2%83"></a>
虚拟环境
</h1><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="c1"># 新建环境</span>
</span></span><span class="line"><span class="cl">python3 -m venv .venv
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 启动环境</span>
</span></span><span class="line"><span class="cl"><span class="nb">source</span> .venv/bin/activate
</span></span></code></pre></div><h1 id="安装的包">
<a class="header-anchor" href="#%e5%ae%89%e8%a3%85%e7%9a%84%e5%8c%85"></a>
安装的包
</h1><ul>
<li><code>python313-devel</code>: meson用，不然用<code>pip3</code>安装下面的包的时候会报错。</li>
<li><code>pygobject</code>: 基础包。</li>
<li><code>pygobject-stubs</code>: 自动补全用。</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">sudo zypper in python313-devel
</span></span><span class="line"><span class="cl">pip3 install pygobject
</span></span><span class="line"><span class="cl">pip3 install pygobject-stubs
</span></span></code></pre></div><h1 id="测试样例">
<a class="header-anchor" href="#%e6%b5%8b%e8%af%95%e6%a0%b7%e4%be%8b"></a>
测试样例
</h1><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># main.py</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">gi</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">gi</span><span class="o">.</span><span class="n">require_version</span> <span class="p">(</span><span class="s1">&#39;Gtk&#39;</span><span class="p">,</span> <span class="s1">&#39;4.0&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">gi.repository</span> <span class="kn">import</span> <span class="n">Gtk</span> <span class="c1"># type: ignore</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">on_activate</span><span class="p">(</span><span class="n">app</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="n">win</span> <span class="o">=</span> <span class="n">Gtk</span><span class="o">.</span><span class="n">ApplicationWindow</span><span class="p">(</span><span class="n">application</span><span class="o">=</span><span class="n">app</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">btn</span> <span class="o">=</span> <span class="n">Gtk</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">&#34;Hello, World!&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">btn</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s1">&#39;clicked&#39;</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">win</span><span class="o">.</span><span class="n">close</span><span class="p">())</span>
</span></span><span class="line"><span class="cl">    <span class="n">win</span><span class="o">.</span><span class="n">set_child</span><span class="p">(</span><span class="n">btn</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">win</span><span class="o">.</span><span class="n">present</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">app</span> <span class="o">=</span> <span class="n">Gtk</span><span class="o">.</span><span class="n">Application</span><span class="p">(</span><span class="n">application_id</span><span class="o">=</span><span class="s1">&#39;org.gtk.Example&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">app</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s1">&#39;activate&#39;</span><span class="p">,</span> <span class="n">on_activate</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">app</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
</span></span></code></pre></div><blockquote>
<p>[! Caution]
记得添加<code>__init__.py</code>。</p>
</blockquote>
        
        <hr><p>Published on 2026-04-08 at <a href='https://blog.qyt.li/x/'>qytlix no blogs</a>, last modified on 2026-04-08</p>]]></description><category>content</category><category>tech</category><category>技术</category></item></channel></rss>