msys2 ucrt64를 엽니다.
miniconda 를 설치하셨다면
cd C:/Users/admin/miniconda3/etc/profile.d를 통하여 msys 내에서 해당 경로로 이동합니다.
dir을 쳐서 해당 경로에 뭐가 있는지 확인합니다.
conda init bash를 통해 conda환경을 초기화 합니다.
source conda.sh
그리고 nano ~/.bashrc를 통해 bash 환경설정으로 들어갑니다.
pagedown 키를 쭉 눌러서 맨 밑줄로 이동한 후
source /c/Users/gsgzj/miniconda3/etc/profile.d/conda.sh
그리고 source ~/.bashrc 치셔서 적용해주시고
pacman -S mingw-w64-ucrt-x86_64-gcc
위의 한 줄을 추가하고 ctrl + o -> y -> enter -> ctrl +x 를 치고 exit을 쳐서 msys를 종료합니다.
그리고 다시 msys를 켜서 conda –version을 쳐서 정상적으로 실행되는지 확인합니다.
이제 gtk4를 설치할 차례입니다.
ucrt64.exe를 실행하시고
pacman -Suy
pacman -S mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-python3 mingw-w64-ucrt-x86_64-python3-gobject
gtk4-demo
gtk4-demo를 치시면 데모 창이 뜨는 것을 보실 수 있습니다.

이제 작성한 스크립트는
python3 helloworld.py와 같이 실행하실 수 있고

와 같이 실행되는 모습을 보실 수 있습니다.
더욱 자세한 정보는 https://pygobject.gnome.org/tutorials/에서 보세요
adawaita를 사용하여 테마를 개선하고 싶다면
pacman -S mingw-w64-ucrt-x86_64-libadwaita
를 설치하세요
import sys
import gi
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw
class MainWindow(Gtk.ApplicationWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Things will go here
class MyApp(Adw.Application):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.connect('activate', self.on_activate)
def on_activate(self, app):
self.win = MainWindow(application=app)
self.win.present()
app = MyApp(application_id="com.example.GtkApplication")
app.run(sys.argv)

import sys
import gi
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw
class MainWindow(Gtk.ApplicationWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Things will go here
self.box1 = Gtk.Box()
self.set_child(self.box1)
self.button = Gtk.Button(label="Hello")
self.box1.append(self.button)
class MyApp(Adw.Application):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.connect('activate', self.on_activate)
def on_activate(self, app):
self.win = MainWindow(application=app)
self.win.present()
app = MyApp(application_id="com.example.GtkApplication")
app.run(sys.argv)
라는 코드를 실행시켜 보면

로 버튼이 잘 생성되었음을 아실 수 있습니다.