0

所以我的问题是处理从 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()
4

0 回答 0