구글 안티그래비티 완전 분석 — 모델·요금제·CLI 총정리

🚀 구글 안티그래비티(Antigravity) 완전 분석 구글이 2025년 11월 Gemini 3와 함께 공개한 에이전트 퍼스트(agent-first) IDE 안티그래비티는 Claude·GPT·Gemini를 한 도구에서 골라 쓰는 멀티모델 코딩 환경이다. 이 글에서는 ① 지원 모델과 요금제별 사용량의 실체, ② 실사용자 평가, ③ 구글의 방향성, ④ Claude Code와의 비교·연계, ⑤ CLI( agy )로 직접 쓰는 법까지 다섯 갈래를 차례로 정리한다. 자료 간 충돌이 있는 지점은 한쪽으로 단정하지 않고 양쪽을 모두 살려 표기했다. 📅 기준 시점: 2026년 6월 · 프리뷰 단계 정보로 수치는 변동 가능 1. 안티그래비티란 무엇인가 — 기초 정리 안티그래비티는 2025년 7월 구글이 24억 달러 규모 라이선스 계약 으로 영입한 전 Windsurf 팀이 설계를 주도했다. VSCode를 포크한 위에 자율 에이전트 오케스트레이션 계층을 얹은 구조다. 2026년 5월 Google I/O에서 발표된 안티그래비티 2.0 은 데스크탑 앱과 함께 공식 CLI agy 를 처음 공개하며 기존 Gemini CLI의 공식 후계자 자리를 확정했다. 핵심 정체성은 단순 코드 자동완성이 아니라 병렬 에이전트 오케스트레이션 이다. 여러 에이전트가 동시에 — 하나는 API, 하나는 테스트, 또 하나는 프론트엔드 — 작업을 나눠 진행하고, 각 에이전트는 계획·테스트 결과·스크린샷·영상을 담은 Artifact 를 남긴다. "사람이 한 줄씩 승인"하는 방식이 아니라 "에이전트들이 일을 마치고 사람이 사후 검수"하는 모델이다. flowchart TD A([사용자 작업 지시]) --> B[에이전트 A API 구현] A --> C[에이전트 B 테스트 작성] A --> D[에이전트 C UI 생성] B --> E[Artifact 계획·결과·영상] C --> E D --> E...

Python GUI Development: A Guide to Essential Libraries and Their Core Components

Okay, here is a blog-style article detailing Python GUI packages and their key components.


Python GUI Libraries: Crafting User-Friendly Interfaces

Building a graphical user interface (GUI) for your Python application can transform it from a command-line tool into an accessible, user-friendly experience. Whether you're developing a desktop application, a data visualization tool, or a complex software, Python offers a rich ecosystem of libraries to help you create stunning and functional GUIs.

Let's explore some of the most popular and powerful Python GUI libraries, along with their core components.

1. Tkinter: The Built-in Standard

Tkinter is Python's de facto standard GUI package. It's included with most Python installations, making it incredibly easy to start with. While it might not offer the most modern aesthetics out-of-the-box, it's robust, well-documented, and perfect for simple to moderately complex applications.

Key Roles & Classes:

  • tkinter.Tk: The main window or root window of your application. All other widgets are typically placed within this.
  • tkinter.Frame: A rectangular container widget used to group and organize other widgets. It helps in structuring complex layouts.
  • tkinter.Label: Displays static text or images. Useful for titles, descriptions, or showing status messages.
  • tkinter.Button: Creates a clickable button that can trigger an action when pressed.
  • tkinter.Entry: A single-line widget for users to input text.
  • tkinter.Text: A multi-line text widget, suitable for larger text inputs, editing, or displaying formatted text.
  • tkinter.Canvas: A versatile widget for drawing graphics, such as lines, polygons, text, and images.

Example Snippet (Conceptual):

import tkinter as tk

root = tk.Tk() # Create the main window
root.title("My First GUI")

label = tk.Label(root, text="Hello, GUI World!") # Create a label
label.pack() # Add the label to the window

button = tk.Button(root, text="Click Me", command=lambda: print("Button clicked!")) # Create a button
button.pack() # Add the button to the window

root.mainloop() # Start the Tkinter event loop

2. PyQt / PySide: Powerful Qt Bindings

PyQt and PySide are Python bindings for the Qt application framework, a highly popular and mature cross-platform C++ framework. They offer a vast array of widgets, advanced features, and a professional look and feel. PySide is the officially supported binding by The Qt Company, while PyQt is developed by Riverbank Computing. Both are excellent choices for feature-rich desktop applications.

Key Roles & Classes:

  • PyQt5.QtWidgets.QApplication (or PySide2.QtWidgets.QApplication): Manages the GUI application's control flow and main settings. Every Qt application must have one QApplication object.
  • PyQt5.QtWidgets.QWidget (or PySide2.QtWidgets.QWidget): The base class of all user interface objects. It's a blank canvas on which you can draw or place other widgets.
  • PyQt5.QtWidgets.QMainWindow (or PySide2.QtWidgets.QMainWindow): Provides a main application window with a typical desktop interface, including a menu bar, toolbars, and a status bar.
  • PyQt5.QtWidgets.QLabel: Displays text or images.
  • PyQt5.QtWidgets.QPushButton: A standard command button.
  • PyQt5.QtWidgets.QLineEdit: A single-line text input widget.
  • PyQt5.QtWidgets.QTextEdit: A multi-line rich text editing widget.

Example Snippet (Conceptual using PySide6):

import sys
from PySide6.QtWidgets import QApplication, QWidget, QLabel, QPushButton

app = QApplication(sys.argv) # Create the application object

window = QWidget() # Create a basic window
window.setWindowTitle("PyQt/PySide GUI")

label = QLabel("Welcome to Qt!", parent=window) # Create a label
label.move(50, 50) # Position the label

button = QPushButton("Click Me", parent=window) # Create a button
button.move(50, 100)
button.clicked.connect(lambda: print("Qt Button Clicked!")) # Connect button click to a function

window.show() # Display the window
sys.exit(app.exec()) # Start the application's event loop

3. Kivy: Modern, Touch-Friendly UIs

Kivy is an open-source Python library designed for rapid development of applications that make use of innovative user interfaces, such as multi-touch applications. It's particularly well-suited for developing applications for desktop, mobile (Android/iOS), and other touch-enabled devices. Kivy uses its own declarative language (Kv language) for defining UI layouts and styles.

Key Roles & Classes:

  • kivy.app.App: The base class for all Kivy applications. You subclass this to create your app.
  • kivy.uix.widget.Widget: The base class for all user interface elements in Kivy.
  • kivy.uix.label.Label: Displays text.
  • kivy.uix.button.Button: A standard button widget.
  • kivy.uix.textinput.TextInput: For user text input.
  • Layouts (e.g., kivy.uix.boxlayout.BoxLayout, kivy.uix.gridlayout.GridLayout, kivy.uix.floatlayout.FloatLayout): These are specialized widgets used to arrange other widgets in specific patterns.

Example Snippet (Conceptual):

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button

class MyKivyApp(App):
    def build(self):
        layout = BoxLayout(orientation='vertical', padding=30, spacing=10)
        label = Label(text='Hello from Kivy!', font_size='20sp')
        button = Button(text='Tap Me', on_press=self.on_button_click)

        layout.add_widget(label)
        layout.add_widget(button)
        return layout

    def on_button_click(self, instance):
        print("Kivy Button Tapped!")

if __name__ == '__main__':
    MyKivyApp().run()

4. Dear PyGui: Fast, GPU-Accelerated

Dear PyGui is a relatively newer, but incredibly fast, GPU-accelerated GUI toolkit. It's designed for performance and is excellent for applications requiring real-time data visualization, scientific plotting, game development tools, or complex UIs where responsiveness is paramount. It uses an immediate mode GUI paradigm.

Key Roles & Classes:

  • dearpygui.dearpygui.create_context(): Initializes the Dear PyGui context.
  • dearpygui.dearpygui.create_viewport(): Creates the main application window (viewport).
  • dearpygui.dearpygui.setup_dearpygui(): Configures the viewport.
  • dearpygui.dearpygui.start_dearpygui(): Starts the Dear PyGui rendering and event loop.
  • dearpygui.dearpygui.add_text(): Adds static text to the GUI.
  • dearpygui.dearpygui.add_button(): Adds a clickable button.
  • dearpygui.dearpygui.add_input_text(): Adds a single-line text input field.
  • dearpygui.dearpygui.add_plot(): Creates a plot widget for data visualization.

Example Snippet (Conceptual):

import dearpygui.dearpygui as dpg

dpg.create_context()

# Create a simple window
with dpg.window(label="Dear PyGui Example", width=400, height=300):
    dpg.add_text("This is a Dear PyGui application.")

    def button_callback(sender, app_data):
        print("Dear PyGui button clicked!")

    dpg.add_button(label="Click Me", callback=button_callback)

    input_text_tag = dpg.add_input_text(label="Enter text")
    dpg.add_text("", tag="output_text") # Placeholder for output

    def input_callback(sender, app_data):
        dpg.set_value("output_text", f"You entered: {app_data}")

    dpg.set_item_callback(input_text_tag, input_callback)


# Setup and start the GUI
dpg.create_viewport(title='Dear PyGui Window', width=500, height=400)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

Choosing the Right Library

  • For quick, simple tools or learning: Tkinter is your go-to due to its ease of use and inclusion with Python.
  • For professional, feature-rich desktop applications: PyQt or PySide offer the most power and flexibility.
  • For modern, touch-friendly, cross-platform (including mobile) apps: Kivy is an excellent choice.
  • For high-performance, data-intensive, or real-time applications: Dear PyGui stands out with its GPU acceleration.

Each of these libraries has its strengths, and the best one for you will depend on your project's specific requirements, your familiarity with the underlying technologies, and the desired user experience.

📚 참고 자료

댓글

이 블로그의 인기 게시물

Vim 9.2 릴리즈 총정리: 더 빠르고 강력해진 텍스트 편집의 제왕

폐쇄망 SoC 설계자를 위한 가볍고 빠른 Vim 최적화 가이드

에이전트 시대를 위한 터미널 cmux 가이드: 설치부터 AI 활용까지