所以我的问题是处理从 tkinter 构建的输入字段的选项卡。我试图按降序排列它们,但顺序是相反的。如果我 Shift+Tab 覆盖它们,则顺序是正确的,但我正试图使其以正确的顺序在输入字段上进行选项卡。
我认为这与您创建条目的顺序有关,但是在弄乱了创建顺序之后,我似乎无法弄清楚。我错过了什么?
谢谢你。
我尝试移动代码片段,因为我将输入字段分为左右框架。我先构建左侧然后构建右侧,这就是我希望能够通过标签的顺序,但我也尝试先创建右侧但无济于事。
import tkinter as tk
import re
from tkinter import Label
from typing import Tuple
root = tk.Tk()
class App(tk.Frame):
# COLOR SETTING AND BACKGROUND IMAGE
black = "#000000"
bg_color = "#D4E9D4"
phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
# FONT CONFIGURATION
font_config: Tuple[str, str] = ("Times New Roman", "12")
canvas_height = 600
canvas_width = 1024
entry_pos_x = 0.30
entry_pos_y = [0.20, 0.28, 0.36, 0.44, 0.52, 0.60]
label_pos_x = 0.29
label_pos_y = [0.21, 0.29, 0.37, 0.45, 0.53, 0.61]
drop_down_width = 0.40
def __init__(self, master=None):
assert isinstance(master, object)
tk.Frame.__init__(self, master)
self.create_widgets()
def create_widgets(self):
# WINDOW TITLE
self.winfo_toplevel().title("TITLE")
# BACKGROUND CANVAS CONFIGURATION
canvas = tk.Canvas(root, height=self.canvas_height, width=self.canvas_width)
# IMAGE
canvas.create_image((0, 0), image=self.image)
canvas.pack(expand="yes", fill="both")
# LEFT FRAME OBJECTS
self.left_frame = tk.Frame(root, bg=self.bg_color)
self.left_frame.place(relx=0, rely=0.1, relwidth=0.5, relheight=0.8)
self.left_var = tk.StringVar(self.left_frame)
self.phone_entry = tk.Entry(self.left_frame)
self.email_entry = tk.Entry(self.left_frame)
self.address_entry = tk.Entry(self.left_frame)
self.last_name_entry = tk.Entry(self.left_frame)
self.first_name_entry = tk.Entry(self.left_frame)
self.ethnicity_options = ["Asian", "Black/African", "Caucasian",
"Hispanic/Latino", "Native American", "Pacific Islander",
"Prefer not to answer"]
self.ethnic_drop_down = tk.OptionMenu(self.left_frame, self.left_var, *self.ethnicity_options)
# ***************LEFT**************
# ENTRY FIELD CONFIGURATION
self.first_name_entry.config(font=self.font_config)
self.first_name_entry.place(relx=self.entry_pos_x, rely=self.entry_pos_y[0], relwidth=0.40)
self.first_name_entry.focus()
self.last_name_entry.config(font=self.font_config)
self.last_name_entry.place(relx=self.entry_pos_x, rely=self.entry_pos_y[1], relwidth=0.40)
self.address_entry.config(font=self.font_config)
self.address_entry.place(relx=self.entry_pos_x, rely=self.entry_pos_y[2], relwidth=0.40)
self.email_entry.config(font=self.font_config)
self.email_entry.place(relx=self.entry_pos_x, rely=self.entry_pos_y[3], relwidth=0.40)
self.phone_entry.config(font=self.font_config)
self.phone_entry.place(relx=self.entry_pos_x, rely=self.entry_pos_y[4], relwidth=0.40)
# DROP_DOWN CONFIGURATION
ethnic_label = tk.Label(self.left_frame, bg=self.bg_color, text="Ethnicity")
ethnic_label.config(font=self.font_config)
ethnic_label.place(relx=self.label_pos_x, rely=self.label_pos_y[5], anchor="e")
# ETHIC MENU CONFIGURATION
self.left_var.set(self.ethnicity_options[6])
self.ethnic_drop_down.config(font=self.font_config)
self.ethnic_drop_down.place(relx=self.entry_pos_x, rely=self.entry_pos_y[5], relwidth=self.drop_down_width)
# RIGHT FRAME OBJECTS
self.right_frame = tk.Frame(root, bg=self.bg_color)
self.right_frame.place(relx=0.5, rely=0.1, relwidth=0.5, relheight=0.8)
self.right_var = tk.StringVar(self.right_frame)
self.username_entry = tk.Entry(self.right_frame, font=40)
# # ***************RIGHT**************
self.username_entry.place(relx=self.entry_pos_x, rely=self.entry_pos_y[4], relwidth=0.40)
username_label = tk.Label(self.right_frame,
bg=self.bg_color, text="Username")
username_label.config(font=self.font_config)
username_label.place(relx=self.label_pos_x, rely=self.label_pos_y[4], anchor="e")
if __name__ == '__main__':
app = App(master=root)
app.mainloop()