Modern industrial-strength user interface toolkits are usually described informally, in terms of implementation artifacts such as objects and imperative state. While the practical utility of these toolkits is clear, we argue that the absence of an underlying formal model significantly complicates GUI programming. In this paper, we present Fruit, a new user interface toolkit based on a simple formal model of user interfaces. The model identifies signals (continuous time-varying values) and signal functions (pure functions mapping signals to sigcore abstractions, and uses point-wise functions (also known as one-way constraints) to specify relationships between user interface components. We use Fruit to develop executable specifications for several realistic examples, and examine one example in detail to demonstrate the practical benefits of our approach. Keywords formal methods, executable specifications, user interface toolkits, constraints, functional programming