Python Forum
[Tkinter] arrow key selection for menu
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tkinter] arrow key selection for menu
#1
I have the initial layout built. I will have to rebuild the menu as a subclass app definition as I was advised in my other thread to get key bind input events to work.

The goal is to have the menu initially with no highlighted items. as you activate a column to make a selection the header for that section highlights and you then highlight an option. You use the arrow keys to make your selections. As you move the arrow key left or right you move to a different column heading. The up and down keys make the selection highlight.

I just need help on the vernacular and what type of options to use. I can figure out the rest once I got something to chew on.

This is to replace a flash software piece for a movie replica fascimile for the costuming group I am in.

For reference this is the other thread:
https://python-forum.io/Thread-Tkinter-b...ss-counter

# Import module
from tkinter import *
import tkinter
from PIL import Image, ImageTk

import keyboard
import pynput
import pygame

pygame.init()
keys = pygame.key.get_pressed()

# Create object
root = tkinter.Tk()

# Adjust size
root.geometry("640x300")
root.configure(bg='black')

# Specify Grid
# options for grid:
# MINSIZE, PAD, UNIFORM, WEIGHT

Grid.rowconfigure(root,0,weight=1, uniform='a')
Grid.rowconfigure(root,1,weight=1, uniform='b')
Grid.rowconfigure(root,2,weight=1, uniform='b')
Grid.rowconfigure(root,3,weight=1, uniform='b')
Grid.rowconfigure(root,4,weight=1, uniform='b')
Grid.rowconfigure(root,5,weight=1, uniform='b')
Grid.rowconfigure(root,6,weight=1, uniform='b')
Grid.rowconfigure(root,7,weight=1, uniform='b')
Grid.rowconfigure(root,8,weight=1, uniform='b')
Grid.rowconfigure(root,9,weight=1, uniform='b')
Grid.columnconfigure(root,0,weight=1, uniform='d')
Grid.columnconfigure(root,1,weight=1, uniform='d')
Grid.columnconfigure(root,2,weight=1, uniform='d')
Grid.columnconfigure(root,3,weight=1, uniform='d')
Grid.columnconfigure(root,4,weight=1, uniform='d')
Grid.columnconfigure(root,5,weight=1, uniform='d')
Grid.columnconfigure(root,6,weight=1, uniform='d')
Grid.columnconfigure(root,7,weight=1, uniform='d')
#Grid.columnconfigure(root,4,weight=1, uniform='a')
#Grid.rowconfigure(root,0,row=0,weight=0)


# notes on different widget options other notes sections will be added for late rreference needs and 
# desired customizations.
# w = Canvas (master, option-value
# bd, bg, cursor, highlight color, width, height
# w = CheckButton(master, option=value)
# Title, activebackground, activeforeground, bg, command, font, image
# w=Entry(master, option=value)
# bd, bg, cursor, command, highlightcolor, width, height
# w=Label(master, option=value)
# bg, bd, command, font, image, width, height
# w = Listbox(master, option=value)
# hightlightcolor, bg, bd, font, image, width, height
# w = MenuButton(master, option=value)
# activebackground, activeforeground, bg, bd, cursor, image, width, height, highlightcolor
# w = Scrollbar(master, option=value)
# width, activebackground, bg, bd, cursor
# w = Text(master, option=value)
# highlightcolor, insertbackground, bg, font, image, width, height
# w = tk.menu button(parent, option, ...)
# activebackground, activeforeground, anchor, background or bg, cursor, compound, direction, disabledforeground, fg, font, height, highlightbackground, highlightcolor, highlightthickness, image, justify, menu, padx, pady, relief, state, takefocus, text, textvariable, underline, width, wraplength
#
#
#

#image files 
#photo = PhotoImage(file = r"c:\Menu_title.png") # old sentry gun menu title

# Specify Framesw = Frame(master, option=value)
# bg, bd, cursor, height, highlightbackground, highlightcolor, highlightthickness, relief, width


# Create Buttons
# master, option=value, ...
# activebackground, activeforeground, bd, bg, command, fg, font, height, highlightcolor, image, justify, padx, pady, relief, state, underline, width, wraplength
button_1 = Button(root,justify=CENTER,text="AUTO-REMOTE",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
button_2 = Button(root,justify=CENTER,text="HARD",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
button_3 = Button(root,justify=CENTER,text="SEMIHARD",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
button_4 = Button(root,justify=CENTER,text="SOFT",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
sbutton_1 = Button(root,justify=CENTER,text="BIO",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
sbutton_2 = Button(root,justify=CENTER,text="INERT",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
tsbutton_1 = Button(root,justify=CENTER,text="MULTI SPEC",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
tsbutton_2 = Button(root,justify=CENTER,text="INFRA RED",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
tsbutton_3 = Button(root,justify=CENTER,text="UV",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
wsbutton_1 = Button(root,justify=CENTER,text="SAFE",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
wsbutton_2 = Button(root,justify=CENTER,text="ARMED",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
isbutton_1 = Button(root,justify=CENTER,text="SEARCH",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
isbutton_2 = Button(root,justify=CENTER,text="TEST",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
isbutton_3 = Button(root,justify=CENTER,text="ENGAGED",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
isbutton_4 = Button(root,justify=CENTER,text="INTERROGATE",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
trbutton_1 = Button(root,justify=CENTER,text="AUTO",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
trbutton_2 = Button(root,justify=CENTER,text="SELECTIVE",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
smman = Button(root,justify=CENTER,text="MAN-OVERRIDE",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
smauto = Button(root,justify=CENTER,text="SEMI-AUTO",bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black',activebackground='yellow')
gun_1 = Button(root,borderwidth=7,bg='black',relief=RIDGE,disabledforeground='yellow',state=DISABLED,text="kp")
gun_2 = Button(root,borderwidth=7,bg='black',fg='yellow',disabledforeground='yellow',state=DISABLED,text="kp")
#header = Button(root, image = photo, compound = TOP) # image reference
headernew = Button(root, bg='black',state=DISABLED, fg='yellow',disabledforeground='yellow',highlightbackground='yellow',borderwidth=2,justify=CENTER, text="UA 571-C \n REMOTE SENTRY WEAPON SYSTEM")
syst = Button(root,bg='black',state=DISABLED, fg='yellow',disabledforeground='yellow',highlightbackground='yellow',borderwidth=2,justify=CENTER,text="SYSTEM \n   MODE")
weap = Button(root,bg='black',state=DISABLED, fg='yellow',disabledforeground='yellow',highlightbackground='yellow',borderwidth=2,justify=CENTER,text="WEAPON \n   STATUS")
iff = Button(root,bg='black',state=DISABLED, fg='yellow',disabledforeground='yellow',highlightbackground='yellow',borderwidth=2,justify=CENTER,text="IFF \n   STATUS")
test = Button(root,bg='black',state=DISABLED, fg='yellow',disabledforeground='yellow',highlightbackground='yellow',borderwidth=2,justify=CENTER,text="TEST \n   ROUTINE")
target = Button(root,bg='black',state=DISABLED, fg='yellow',disabledforeground='yellow',highlightbackground='yellow',borderwidth=2,justify=CENTER,text="TARGET PROFILE")
spectral = Button(root,bg='black',state=DISABLED, fg='yellow',disabledforeground='yellow',highlightbackground='yellow',borderwidth=2,justify=CENTER,text="SPECTRAL PROFILE")
ts = Button(root,bg='black',state=DISABLED, fg='yellow',disabledforeground='yellow',highlightbackground='yellow',borderwidth=2,justify=CENTER,text="TARGET SELECT")
# bg='black', fg='yellow', highlightbackground='yellow', highlightcolor='black'

# Set grid
# widget.grid(grid_options)
# column, columnspan, ipadx, ipady, padx, pady, row, rowspan, sticky
gun_1.grid(row=0,column=0,ipadx=2,ipady=2,padx=2,pady=2,sticky=W)
gun_2.grid(row=0,column=7,ipadx=2,ipady=2,padx=2,pady=2,sticky=E)
headernew.grid(row=0,column=1,columnspan=6,sticky="NSEW")
button_1.grid(row=2,column=0,columnspan=2,sticky="NSEW")
button_2.grid(row=9,column=0,columnspan=3,sticky="NSEW")
button_3.grid(row=8,column=0,columnspan=3,sticky="NSEW")
button_4.grid(row=7,column=0,columnspan=3,sticky="NSEW")
sbutton_1.grid(row=7,column=3,columnspan=2,sticky="NSEW")
sbutton_2.grid(row=8,column=3,columnspan=2,sticky="NSEW")
tsbutton_1.grid(row=7,column=5,columnspan=3,sticky="NSEW")
tsbutton_2.grid(row=8,column=5,columnspan=3,sticky="NSEW")
tsbutton_3.grid(row=9,column=5,columnspan=3,sticky="NSEW")
wsbutton_1.grid(row=2,column=2,columnspan=2,sticky="NSEW")
wsbutton_2.grid(row=3,column=2,columnspan=2,sticky="NSEW")
isbutton_1.grid(row=2,column=4,columnspan=2,sticky="NSEW")
isbutton_2.grid(row=3,column=4,columnspan=2,sticky="NSEW")
isbutton_3.grid(row=4,column=4,columnspan=2,sticky="NSEW")
isbutton_4.grid(row=5,column=4,columnspan=2,sticky="NSEW")
trbutton_1.grid(row=2,column=6,columnspan=2,sticky="NSEW")
trbutton_2.grid(row=3,column=6,columnspan=2,sticky="NSEW")
smman.grid(row=3,column=0,columnspan=2,sticky="NSEW")
smauto.grid(row=4,column=0,columnspan=2,sticky="NSEW")


syst.grid(row=1,column=0,columnspan=2,sticky="NSEW")
weap.grid(row=1,column=2,columnspan=2,sticky="NSEW")
iff.grid(row=1,column=4,columnspan=2,sticky="NSEW")
test.grid(row=1,column=6,columnspan=2,sticky="NSEW")
target.grid(row=6,column=0,columnspan=3,sticky="NSEW")
spectral.grid(row=6,column=3,columnspan=2,sticky="NSEW")
ts.grid(row=6,column=5,columnspan=3,sticky="NSEW")

while True:
# Execute tkinter
  root.mainloop()
  for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
      if event.key == pygame.K_q:
        pygame.quit()
        sys.exit(0)
        quit()
        break
  if keys[pygame.K_w]:
    break
As always this is an awesome forum and everyone on it is an awesome help!
Reply


Messages In This Thread
arrow key selection for menu - by knoxvilles_joker - Apr-13-2021, 03:09 PM
RE: arrow key selection for menu - by Yoriz - Apr-13-2021, 04:33 PM
RE: arrow key selection for menu - by Yoriz - Apr-14-2021, 06:57 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Python Turtle. Pointers of the "arrow" direction of the vector. roomONmoon 1 735 Dec-09-2023, 11:49 PM
Last Post: deanhystad
  How to move in entries using the arrow keys by applying the bind and focus? pymn 4 4,879 Apr-06-2022, 04:29 AM
Last Post: pymn

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020