diff --git a/src/twisted/internet/gireactor.py b/src/twisted/internet/gireactor.py
index 92596db1da2..a577825a87e 100644
--- a/src/twisted/internet/gireactor.py
+++ b/src/twisted/internet/gireactor.py
@@ -24,6 +24,7 @@
 from twisted.internet.error import ReactorAlreadyRunning
 from twisted.internet import _glibbase
 from twisted.python import runtime
+import gi
 import gi.pygtkcompat
 from gi.repository import GLib
 
@@ -68,6 +69,7 @@ class GIReactor(_glibbase.GlibReactorBase):
     def __init__(self, useGtk=False):
         _gtk = None
         if useGtk is True:
+            gi.require_version("Gtk", "3.0")
             from gi.repository import Gtk as _gtk
 
         _glibbase.GlibReactorBase.__init__(self, GLib, _gtk, useGtk=useGtk)
@@ -112,6 +114,7 @@ class PortableGIReactor(_glibbase.PortableGlibReactorBase):
     def __init__(self, useGtk=False):
         _gtk = None
         if useGtk is True:
+            gi.require_version("Gtk", "3.0")
             from gi.repository import Gtk as _gtk
 
         _glibbase.PortableGlibReactorBase.__init__(self, GLib, _gtk, useGtk=useGtk)
diff --git a/src/twisted/internet/test/test_gireactor.py b/src/twisted/internet/test/test_gireactor.py
index d15a9262248..af5092a3614 100644
--- a/src/twisted/internet/test/test_gireactor.py
+++ b/src/twisted/internet/test/test_gireactor.py
@@ -25,6 +25,9 @@
         gtk3reactor = None
     else:
         gtk3reactor = _gtk3reactor
+        import gi  # type: ignore[import]
+
+        gi.require_version("Gtk", "3.0")
         from gi.repository import Gtk
 
 from twisted.internet.error import ReactorAlreadyRunning
