Используя Python 3.8, GTK 3.0, я бы хотел запретить пользователю вводить текст вручную в Gtk.SpinButton()
, оставляя часть +/-
/ up/down
функционала SpinButton. Возможно ли это?
Я пробовал set_editable(False)
, но это отключает весь виджет, включая стрелки вверх / вниз.
Я подумал, что, возможно, есть способ получить доступ к части Gtk.Entry()
SpinButton и вызовите set_editable(False)
только для этого потомка, но еще не нашли его.
РЕДАКТИРОВАТЬ: Вот некоторый демонстрационный код
Цель состоит в том, чтобы поле ввода текста spin1 отключено (в идеале нечувствительно, поэтому курсор не может появиться при нажатии), в то время как кнопки +/- все еще работают и обновляют значение. spin2 и spin3 go слишком далеко, так как даже кнопки +/- не работают.
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class SpinButtonWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="SpinButton Demo")
self.set_border_width(10)
grid = Gtk.Grid()
grid.set_column_spacing(6)
grid.set_row_spacing(4)
self.add(grid)
adj1 = Gtk.Adjustment()
adj1.configure(0, 0, 100, 10, 10, 0)
spin1 = Gtk.SpinButton()
spin1.set_adjustment(adj1)
grid.attach(spin1, 0, 0, 1, 1)
adj2 = Gtk.Adjustment()
adj2.configure(0, 0, 100, 10, 10, 0)
spin2 = Gtk.SpinButton()
spin2.set_adjustment(adj2)
spin2.set_editable(False)
grid.attach(spin2, 1, 0, 1, 1)
adj3 = Gtk.Adjustment()
adj3.configure(0, 0, 100, 10, 10, 0)
spin3 = Gtk.SpinButton()
spin3.set_adjustment(adj3)
spin3.set_sensitive(False)
grid.attach(spin3, 2, 0, 1, 1)
label1 = Gtk.Label(label='Basic Spin')
label1.set_halign(Gtk.Align.CENTER)
grid.attach(label1, 0, 1, 1, 1)
label2 = Gtk.Label(label='Editable=False')
label2.set_halign(Gtk.Align.CENTER)
grid.attach(label2, 1, 1, 1, 1)
label3 = Gtk.Label(label='Sensitive=False')
label3.set_halign(Gtk.Align.CENTER)
grid.attach(label3, 2, 1, 1, 1)
win = SpinButtonWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()