Seite 1 von 1

Fokus auf ein neu erstelltes TK-Fenster - automatisch

Verfasst: Montag 30. April 2018, 21:23
von ebs55
Hallo, bin neu hier, hab aber schon ca. 50 oder mehr Stunden in Sachen python auf meinem Mac geübt.
Dabei schon mehrere apps mit TK-Fenster + Label + Eingabefelder + Buttons erstellt.

Nach über 4 Stunden erfolgloser Suche (hier + Suchmaschinen) gebe ich auf und hoffe auf eure Hilfe.

meine Frage:
Kann der Fokus auf das neu erstellte TK-Fenster so gesetzt werden, dass ich nicht mehr mit der Maus (bzw. dem Pad) auf dieses neue Fenster klicken muss?

Vielen Dank schon vorab.

Re: Fokus auf ein neu erstelltes TK-Fenster - automatisch

Verfasst: Dienstag 1. Mai 2018, 11:47
von ebs55
Ich schick noch einen code-Ausschnitt hinterher, obwohl das m.E. nach nix bringt;
Denn es könnte JEDES Script sein, das ein (neues) Fenster öffnet...

Das klappt ja alles im code - lästig ist eben nur, dass ich dann "händisch" in das erzeugte Fenster clicken muss :cry:
Na, vielleicht fällt jemandem was dazu ein?!

Hab zwischendurch (nochmal) alle Attribute zu "TkInter" und "TkInter.commondialog"
und "TkInter.PanedWindows" durchforstet - und natürlich (noch) nicht alle zig hundert Attribute
getestet ( wie z.B. BROWSE.BaseWidget, CURRENT, oder PanedWindow.winfo_name, -parent, pathname
oder "PanedWindow.winfo_screen(self) = "Screen-Name of this widget" oder
"PanedWindow.winfo_toplevel(self)"

Hattet Ihr damit schon mal etwas probiert?
[codebox=python file=e_gold.pyw]
(die Idee ist "geklaut" aus irgend einem Forumsbeitrag - vlt. sogar hier!?)

import tkinter as tk
import gui

OPTIONS = ["Euro -> Gold", "Gold -> Euro"]
UMRECHNUNG_EURO_GOLD = 35.1613

class Application(tk.Tk):
def __init__(self, **kwargs):
tk.Tk.__init__(self, **kwargs)
gui.init_app(self)
# tk.focus_set(self) # -> module 'tkinter' has no attribute 'focus_set'
self.button_2.configure(command=self.destroy)
self.bind(sequence='<Return>', func=self.bt_action)
self.bind(sequence='<Escape>', func=self.bt_ende)

self.option = tk.StringVar(self)
self.option.set(OPTIONS[1])
optionen = tk.OptionMenu(self, self.option, *OPTIONS)
optionen.grid(row = 3, column = 0, pady = 5)
self.entry_3.focus()

def bt_ende(self, event):
self.quit()

def bt_action(self, event):
if self.entry_3.get() == '':
betrag=1
print('1 eingefügt. Nochmal MIT Wert !')
self.label_5.configure(text='Wert vergessen!')
else:
betrag = float(self.entry_3.get())
self.label_5.configure(text='')

wahl = self.option.get()
if wahl == OPTIONS[0]:
betrag /= UMRECHNUNG_EURO_GOLD
einheit= "Gramm"
elif wahl == OPTIONS[1]:
betrag *= UMRECHNUNG_EURO_GOLD
einheit = "Euro"
message = "{:.2f} {}".format(betrag, einheit)
self.label_3.configure(text=message)
# Application().focus_set()

if __name__ == '__main__':
Application().mainloop()
[/code]

Re: Fokus auf ein neu erstelltes TK-Fenster - automatisch

Verfasst: Dienstag 1. Mai 2018, 11:55
von __deets__
Das ist OS-abhängig, und hier https://stackoverflow.com/questions/160 ... vel-active findest du ein paar Ansätze. Wenn das nur für deine kleinen Testprogramme ist, kannst du das machen. Wenn du ein Programm zu schreiben gedenkst, das mir während des Starts den Fokus wegnimmt, “haue” ich dich. Das ist sehr miese UX, jemanden faktisch an der Nutzung des Rechners zu hindern, während man sein Programm hochfährt.

Re: Fokus auf ein neu erstelltes TK-Fenster - automatisch

Verfasst: Dienstag 1. Mai 2018, 12:22
von ebs55
Vielen Dank für deine Antwort;

Mit deiner Frage bzw. fast Drohung hast du ja soooo recht - darüber habe ich
überhaupt nicht nachgedacht.

Würde das tatsächlich bedeuten, dass ich dann aus DEM Terminal heraus
(könnte ich noch ein neues Terminal-Fenster aufmachen?) -
NICHTS mehr unternehmen könnte? :shock:

Dann bin ich mir nicht mehr sicher, ob ich "diesen Weg" weiter verfolgen werde :( :roll:

Ganz herzlichen Dank für den Hinweis.

Re: Fokus auf ein neu erstelltes TK-Fenster - automatisch

Verfasst: Dienstag 1. Mai 2018, 12:25
von ebs55
bis auf Weiteres arbeite ich ja "nur lokal" mit dem python Interpreter - solange ist ja kein Anderer gefährdet - aber trotzdem ein sehr aufwühlender Einwand !!! - bin begeistert - 8)

Re: Fokus auf ein neu erstelltes TK-Fenster - automatisch

Verfasst: Dienstag 1. Mai 2018, 12:31
von __deets__
Nein, nicht “nichts”. Aber du startest ein Programm, das dauert, du wendest dich etwas anderem zu - und dann reißt dir das irgendwann den Fokus weg.

Mein emacs zb macht das für jede neu geöffnete Datei. Wenn ich den nun neu starte, und er mehrere Dutzend Dateien öffnet die vorher offen waren, dann kann ich Minuten lang nix tun. Nervt. Und auch nur einmal nervt ;)

Re: Fokus auf ein neu erstelltes TK-Fenster - automatisch

Verfasst: Dienstag 1. Mai 2018, 12:58
von ebs55
o.k. das leuchtet ein; Bin gespannt, was ich über den obigen link noch rauskriege...
Ich werde kurz berichten.