tasks.md 2.1 KB

Tasks: Replace ttk.Frame with tk.Frame in LoginWindow

Implementation Tasks

  1. [x] Replace main_frame with tk.Frame (image_generator.py:147)

    • Change main_frame = ttk.Frame(self.root, padding=40)
    • To main_frame = tk.Frame(self.root, bg='white', padx=40, pady=40)
    • Validation: main_frame should have white background on macOS
  2. [x] Replace username_frame with tk.Frame (image_generator.py:157)

    • Change username_frame = ttk.Frame(main_frame)
    • To username_frame = tk.Frame(main_frame, bg='white')
    • Validation: Frame renders with white background
  3. [x] Replace password_frame with tk.Frame (image_generator.py:176)

    • Change password_frame = ttk.Frame(main_frame)
    • To password_frame = tk.Frame(main_frame, bg='white')
    • Validation: Frame renders with white background
  4. [x] Replace checkbox_frame with tk.Frame (image_generator.py:204)

    • Change checkbox_frame = ttk.Frame(main_frame)
    • To checkbox_frame = tk.Frame(main_frame, bg='white')
    • Validation: Frame renders with white background
  5. [ ] Test complete UI visibility on macOS

    • Verify title "登录" is visible
    • Verify username label and Entry are visible
    • Verify password label and Entry are visible
    • Verify checkboxes remain visible
    • Verify login button is visible
    • Validation: Take screenshot showing all elements visible
  6. Cross-platform verification

    • Test on Windows (ensure no visual regression)
    • Test on Linux if available (ensure no visual regression)
    • Validation: UI renders consistently across platforms
  7. Functional testing

    • Test typing in both input fields
    • Test login button click
    • Test checkbox toggling
    • Test tab navigation
    • Validation: All interactions work correctly

Dependencies

  • Tasks 1-4 can be completed in a single edit session
  • Tasks 5-7 require manual testing after implementation

Notes

  • Keep ttk.Button for login button (works fine)
  • All tk.Frame widgets MUST have explicit bg='white'
  • This is a minimal change - just widget type replacement