Seite 1 von 1

jetzt nur mit ENTER-Taste

Verfasst: Freitag 3. August 2018, 11:36
von marconisahib
Guten Tag blackjack,
zunächst vielen Dank für Deine Hilfe. Ich habe dadurch viel gelernt
Als Anlage eine kleine Liste mit ersten Tests - bin aber schon vieeel weiter.
Test-Eingabe ist jetzt:
call: dh4pb
qsa: 5
qrk: 5
op: fritz
excall: dan
qsa: python

"save" speichert dann alles und zeigt an (hier nicht)

Im Anschluss an diese Liste kommt noch eine Frage.
Hier zeige ich Dir nur, worum es mir bei dem Programm geht.
sri, ich bekomme das nicht in der farbigen python-Darstellung hin.

#!/usr/bin/env python
# coding: utf-8
from __future__ import absolute_import, division, print_function
from functools import partial
import Tkinter as tk
import time ###

##########################
def show_entry_fields():
print("show")

def save_entry_fields(time_label,call_entry):
print("save")
#save fields
#delete fields
call_entry.delete(0, 9)
call_entry.focus_set()

###################

def abgleich(status_label, call_entry, qsa_entry):
if len(call_entry.get()) <1: # == 'dh4pb':
status_label.config(text=' insert new call ', fg='red')
call_entry.delete(0, 9)
call_entry.focus_set()
else:
status_label.config(text=' take other details ', fg='green')
qsa_entry.focus_set()


def invoke_and_break(button, _event):
button.invoke()
return 'break'
###########################
def main():
root = tk.Tk()
root.title("MRD")
root.geometry("600x400")

headline_label = tk.Label(root, bg='white',fg ="red",font = "Helvetica 16 bold")
headline_label.grid(row=0, column=3, sticky=tk.W)
headline_label.config(text="QSO-Menu-c",fg ="red")

################################mrdFenster, ########################

show_label = tk.Label(root, bg='white', fg="blue")
show_label.grid(row=11, column=1, sticky=tk.W)

time_label = tk.Label(root, bg='white', fg="blue")
time_label.grid(row=11, column=3, sticky=tk.W)

status_label = tk.Label(root, bg='white')
status_label.grid(row=0, column=1, sticky=tk.W)

tk.Label(root, text='call').grid(row=1)
call_entry = tk.Entry(root)
call_entry.grid(row=1, column=1)

check_button = tk.Button(root, text='check')
check_button.grid(row=1, column=2, sticky=tk.W, pady=4)

tk.Label(root, text='qsa').grid(row=2)
qsa_entry = tk.Entry(root)
qsa_entry.grid(row=2, column=1)
qsa_entry.insert(1,"5")

tk.Label(root, text='qrk').grid(row=3)
qrk_entry = tk.Entry(root)
qrk_entry.grid(row=3, column=1)
qrk_entry.insert(1,"5")

tk.Label(root, text='op').grid(row=4)
op_entry = tk.Entry(root)
op_entry.grid(row=4, column=1)

tk.Label(root, text='excall').grid(row=5)
excall_entry = tk.Entry(root)
excall_entry.grid(row=5, column=1)

tk.Label(root, text='qra').grid(row=6)
qra_entry = tk.Entry(root)
qra_entry.grid(row=6, column=1)
###
####
save_button = tk.Button(root, text='save')
save_button.grid(row=12, column=1, sticky=tk.W, pady=4)

save_button['command'] = partial(
save_entry_fields, time_label, call_entry)

save_button.bind('<Return>', partial(invoke_and_break, save_button))
root.bind('<Return>', lambda _: root.event_generate('<Tab>'))


check_button['command'] = partial(
abgleich, status_label, call_entry, qsa_entry)

check_button.bind('<Return>', partial(invoke_and_break, check_button))
root.bind('<Return>', lambda _: root.event_generate('<Tab>'))

root.mainloop()


if __name__ == '__main__':
main()

################################

In meinem vorigen TAB-Programm stand recht noch eine Radio button-Auswahl.
der Code dazu stand nach der Fensterbeschreibung. Jetzt bei def main()
weis ich nicht wo ich die hinstellen soll??

Kannst Du mir helfen.
Danke
############################

# Erzeugung des Fensters
mrdFenster = Tk()
mrdFenster.title("MRD")
mrdFenster.geometry("600x400")
w = Label(mrdFenster, text="QSO-Menu",fg ="red",font = "Helvetica 16 bold").grid(ro$

#qssm=read_points()
#print ("qssm ret " , qssm)
################

v = IntVar()
start=20 ###qssm
print ("start =: ", start)
v.set(start) # enthaelt das zuletzt gewaehlte Band

band = [
("80m",80),
("40m",40),
("30m",30),
("20m",20),
("15m",15)
]

def ShowChoice():
print v.get()
Label(mrdFenster, text=" BAND").grid(row=1,column=3,sticky=W)

r = 0
for txt, val in band:
Radiobutton(mrdFenster,
text=txt,
padx = 20,
variable=v,
command=ShowChoice,
value=val).grid(row=r+2,column=3,sticky=W)
r = r + 1

Re: jetzt nur mit ENTER-Taste

Verfasst: Freitag 3. August 2018, 11:47
von DeaD_EyE
Viel gelernt, aber vergessen den Code in Code-Tags zu packen, wodurch alle Einrückungen verloren gehen. Wer soll bitteschön damit arbeiten?

Re: jetzt nur mit ENTER-Taste

Verfasst: Freitag 3. August 2018, 15:29
von marconisahib
sri, als ich das abschickte, war das alles noch eingerückt, Wie kann ich das im Python-Format verschicken?

Re: jetzt nur mit ENTER-Taste

Verfasst: Freitag 3. August 2018, 20:38
von DeaD_EyE
Ich finde den doofen Link jetzt nicht. Die Einrückungen sind immer noch da, sie werden aber nicht angezeigt.
Du musst deinen Beitrag bearbeiten und den Code in Code-Tags setzen.
Im Editor ist es das Symbol: </>

Den Quellcode markieren und dann auf das Symbol klicken und Absenden. Dann sind die Einrückungen auch sichtbar + Syntaxhervorhebung.

Re: jetzt nur mit ENTER-Taste

Verfasst: Samstag 4. August 2018, 06:56
von ThomasL
Ja, ist mir auch schon aufgefallen, der Button für Python Code Tags ist nicht mehr da.

Re: jetzt nur mit ENTER-Taste

Verfasst: Samstag 4. August 2018, 08:34
von marconisahib
GM, Danke für Eure Hilfe.
Ich bin 77 Jahre und beschäftige mich jetzt mit Python.
Habe 1969 mit IBM 1130 angefangen als technischer Programmierer
(Umstellung von Blei auf Lichtsatz)
Jetzt versuche ich mal mit . </> ?? Ich benutze den editor mc.
schicke jetzt den letzten Teil erst mal zur Probe.

############################

# Erzeugung des Fensters
mrdFenster = Tk()
mrdFenster.title("MRD")
mrdFenster.geometry("600x400")
w = Label(mrdFenster, text="QSO-Menu",fg ="red",font = "Helvetica 16 bold").grid(ro$

#qssm=read_points()
#print ("qssm ret " , qssm)
################
##Ich habe das nach den Werten im Hauptpramm angepasst, aber er meckert immer v = IntVar() als unbekannt an
v = IntVar() #wird im neuen Progamm als unbekannt angemeckert
start=20 ###qssm
print ("start =: ", start)
v.set(start) # enthaelt das zuletzt gewaehlte Band

band = [
</>("80m",80),
</>("40m",40),
</>("30m",30),
</>("20m",20),
</>("15m",15)
]

def ShowChoice():
</>print v.get()
Label(mrdFenster, text=---------------" BAND").grid(row=1,column=3,sticky=W)

r = 0
for txt, val in band:
</>Radiobutton(mrdFenster,
</></> text=txt,
</></> padx = 20,
</></> variable=v,
</></> command=ShowChoice,
</></> value=val).grid(row=r+2,column=3,sticky=W)
</> r = r + 1

Re: jetzt nur mit ENTER-Taste

Verfasst: Samstag 4. August 2018, 08:53
von ThomasL
Hi marconi,
du hast das etwas missverstanden.
Hier im Forum gibt es unter dem letzten Beitrag ein Feld Schnellantwort
Da drunter gibt es einen Button Vollständiger Editor & Vorschau Da drauf klicken.
Es erscheint ein Eingabefeld und darüber sind diverse Buttons B I U und </> etc.
Wenn du auf </> klickst erscheint im Eingabefeld
[ code] [ /code]
Füge deinen Code zwischen diese beiden "Tags", dann erscheint der so

Code: Alles auswählen

# Erzeugung des Fensters
mrdFenster = Tk()
mrdFenster.title("MRD")
mrdFenster.geometry("600x400")
w = Label(mrdFenster, text="QSO-Menu",fg ="red",font = "Helvetica 16 bold").grid(ro$
keine </> irgendwo in einem anderen Editor einfügen und dann hier copy pasten,
das ist nicht gewollt und bringt nichts wie du siehst.

Re: jetzt nur mit ENTER-Taste

Verfasst: Samstag 4. August 2018, 09:17
von marconisahib
-------------------------------------------------
Danke für Deine Geduld
gleich kommt der "Problemteil" noch einmal

Test-Eingabe ist jetzt:
call: dh4pb
qsa: 5
qrk: 5
op: fritz
excall: dan
qsa: python
--------------------------------------------------
den radio-button möchte ich auf die rechte Seite setzen?
Höhe qsa
------------------------------------------------------------------------------------

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8
from __future__ import absolute_import, division, print_function
from functools import partial
import Tkinter as tk
import time ###

##########################
def show_entry_fields():
    print("show")

def save_entry_fields(call_entry):
    print("save")
    #save fields
    #delete fields
    call_entry.delete(0, 9) 
    call_entry.focus_set() 

###################

def abgleich(status_label, call_entry, qsa_entry):
    if len(call_entry.get()) <1:  # == 'dh4pb':
       status_label.config(text=' insert new call     ', fg='red')
       call_entry.delete(0, 9)
       call_entry.focus_set()     
    else:
       status_label.config(text=' take other details  ', fg='green')
       qsa_entry.focus_set()


def invoke_and_break(button, _event):
    button.invoke()
    return 'break'
########################### 

def main():
    root = tk.Tk()
    root.title("MRD")
    root.geometry("600x400")
    
    headline_label = tk.Label(root, bg='white',fg ="red",font = "Helvetica 16 bold")
    headline_label.grid(row=0, column=3, sticky=tk.W)
    headline_label.config(text="QSO-Menu",fg ="red")




  ########################################################
    status_label = tk.Label(root, bg='white')
    status_label.grid(row=0, column=1, sticky=tk.W)
    
    tk.Label(root, text='call').grid(row=1)
    call_entry = tk.Entry(root)
    call_entry.grid(row=1, column=1)
    
    check_button = tk.Button(root, text='check')
    check_button.grid(row=1, column=2, sticky=tk.W, pady=4)

    tk.Label(root, text='qsa').grid(row=2)
    qsa_entry = tk.Entry(root)
    qsa_entry.grid(row=2, column=1)
    qsa_entry.insert(1,"5")

    tk.Label(root, text='qrk').grid(row=3)
    qrk_entry = tk.Entry(root)
    qrk_entry.grid(row=3, column=1)
    qrk_entry.insert(1,"5")
    
    tk.Label(root, text='op').grid(row=4)
    op_entry = tk.Entry(root)
    op_entry.grid(row=4, column=1)

tk.Label(root, text='excall').grid(row=5)
    excall_entry = tk.Entry(root)
    excall_entry.grid(row=5, column=1)

    tk.Label(root, text='qra').grid(row=6)
    qra_entry = tk.Entry(root)
    qra_entry.grid(row=6, column=1)
###

    show_button = tk.Button(root, text='show')
    show_button.grid(row=10, column=1, sticky=tk.W, pady=4)

    show_button['command'] = partial(
    show_entry_fields)
    
    show_button.bind('<Return>', partial(invoke_and_break, show_button))
    root.bind('<Return>', lambda _: root.event_generate('<Tab>'))

####
    save_button = tk.Button(root, text='save')
    save_button.grid(row=12, column=1, sticky=tk.W, pady=4)

    save_button['command'] = partial(
        save_entry_fields, call_entry)
    
    save_button.bind('<Return>', partial(invoke_and_break, save_button))
    root.bind('<Return>', lambda _: root.event_generate('<Tab>'))

    
    check_button['command'] = partial(
        abgleich, status_label, call_entry, qsa_entry)
    
    check_button.bind('<Return>', partial(invoke_and_break, check_button))
    root.bind('<Return>', lambda _: root.event_generate('<Tab>'))
    
    root.mainloop()


if __name__ == '__main__':
    main()
    

Re: jetzt nur mit ENTER-Taste

Verfasst: Samstag 4. August 2018, 09:23
von marconisahib
Danke Danke - wieder dazu gelernt

Diesen Radio-button hätte ich gerne im Hauptprogramm an der rechten Seite.

mni tks


Code: Alles auswählen

# Erzeugung des Fensters
mrdFenster = Tk()
mrdFenster.title("MRD")
mrdFenster.geometry("600x400")
w = Label(mrdFenster, text="QSO-Menu",fg ="red",font = "Helvetica 16 bold").grid(row=0,column=3)

read_points()
print ("qssm ret " , qssm)
################

v = IntVar()
start=qssm
print ("start =: ", start)
v.set(start)  # enthaelt das zuletzt gewaehlte Band

band = [
   ("80m",80),
   ("40m",40),
   ("30m",30),
   ("20m",20),
   ("15m",15)
]

def ShowChoice():
    print v.get()

Label(mrdFenster, text="         BAND").grid(row=1,column=3,sticky=W)

r = 0
for txt, val in band:
    Radiobutton(mrdFenster, 
                text=txt,
                padx = 20,
                variable=v, 
                command=ShowChoice,
                 value=val).grid(row=r+2,column=3,sticky=W)
    r = r + 1

Re: jetzt nur mit ENTER-Taste

Verfasst: Samstag 4. August 2018, 09:42
von marconisahib
Achtung
bitte die beiden Zeilen löschen ##
#read_points()
#print ("qssm ret " , qssm)
und start auf 20 setzen
Der "start" kommt sonst aus der letzten Eintragung
################

v = IntVar()
start=20

Re: jetzt nur mit ENTER-Taste

Verfasst: Sonntag 5. August 2018, 11:32
von marconisahib
Danke an Alle -man wird selbstständiger.

Thema hat sich erledigt.
mni tks marconisahib+