Deutsch English Français Italiano |
<vl53om$366a4$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Rich <rich@example.invalid> Newsgroups: comp.lang.tcl Subject: Re: event generate send arg Date: Thu, 2 Jan 2025 04:13:10 -0000 (UTC) Organization: A noiseless patient Spider Lines: 51 Message-ID: <vl53om$366a4$1@dont-email.me> References: <1735775981-1405@newsgrouper.org.uk> Injection-Date: Thu, 02 Jan 2025 05:13:11 +0100 (CET) Injection-Info: dont-email.me; posting-host="6420596632e4571cd84179c8b721a5c9"; logging-data="3348804"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/dTF1li54HWEvkRclBcg2m" User-Agent: tin/2.6.1-20211226 ("Convalmore") (Linux/5.15.139 (x86_64)) Cancel-Lock: sha1:3BQRu1tt/LwUjedAnSq0UhoA54g= Shaun Kulesa <user1405@newsgrouper.org.uk.invalid> wrote: > I'm trying to block any user interaction that is not done via `event generate`. First question is: why? What are you really trying to accomplish? Next suggestion, have you looked into using 'tk busy' (man n busy). It might work better than having to remap every single default event binding within Tk. > To do this I want to break the bindings when $user is not 1. > I want to pass the $user arg to the procedure `block` but I do not > know how to. Note the documentation for -data in the event manpage: -data string String may be any value; it specifies the user_data field for the event. Only valid for virtual events. Corresponds to the %d substitution for virtual events in binding scripts. It tells you how to retreive the '-data' field value, you use the %d substitution. But -data is also "only valid for virtual events" which is why you can't use it with <ButtonPress> (because <ButtonPress> is not a virtual event). > I thought this is done by -data but I get an error saying I can not > use that with the event <ButtonPress>. > > ``` > package require Tk > > button .b -text "Hello, World!" > pack .b -padx 20 -pady 20 > > proc block {{user 0}} { > if {$user ne 1} { > return -code break > } > return > } > > bind .b <ButtonPress> {block} > bind .b <ButtonRelease> {block} > > after 1000 [list event generate .b <ButtonPress> -data 1] > ```