Первый вопрос здесь, но я ответил на несколько, так что, надеюсь, здесь будет достаточно информации, чтобы кто-нибудь дал мне указатель в правильном направлении.
У меня есть следующий код, который будет формироватьсячасть приложения, которое я создаю.Я хочу, чтобы пользователи могли вводить свое имя и оценивать некоторые изображения, оценивая их с помощью ползунка.Чтобы определить источник изображений, я хочу выбрать папку, используя filedialog.askdirectory
, чтобы пользователь мог проверить правильную папку, содержащую изображения.
Я удалил кнопки и функции, которые записываютданные, чтобы упростить это.
Итак, у меня проблема в том, что когда всплывает окно, появляется файл диалога и позволяет мне выбрать папку.После того как я выбрал, поля Entry
не могут быть выбраны, чтобы позволить пользователю вводить свое имя.Если я отхожу от окна с помощью Alt-tab или щелкаю другое окно и возвращаюсь назад, я могу расположить курсор и продолжить как обычно - очевидно, это не идеально для моих конечных пользователей.
Вот всплывающее окно filedialog, показанное здесь:
filedialog popup">
И второе окно, которое не фокусируется автоматически:

import tkinter as tk
from tkinter import filedialog
import numpy as np
class Model:
def __init__(self):
self.scores = []
self.position = 0
self.first_name = ""
self.last_name = ""
class WelcomeWindow:
def __init__(self, master):
button_width=25
button_height=10
self.master = master
self.frame = tk.Frame(self.master)
#self.file_dialog = tk.Frame(self.master)
self.directory = filedialog.askdirectory(parent=self.master)
self.canvas = tk.Canvas(self.frame,
height=600,
width=800
)
self.model = Model()
self.first_name_entry = tk.Entry(self.frame)
self.last_name_entry = tk.Entry(self.frame)
self.slider = tk.Scale(self.frame,
length=button_width * 20,
width=button_width * 2,
sliderlength=150,
showvalue=False,
from_=-3.00,
to=3.00,
orient="horizontal",
tickinterval=1,
label="Here is a slider",
resolution=0.01
)
self.frame.pack()
self.first_name_entry.pack()
self.last_name_entry.pack()
self.canvas.pack()
self.slider.pack()
def main():
root = tk.Tk()
win = WelcomeWindow(root)
root.mainloop()
main()
Я пытался установить параметр takefocus
для frame
и для поля first_name_entry
на True
безуспех.Я также попытался настроить родительский элемент self.directory
на self.frame
, и это полностью лишает меня возможности взаимодействовать с главным окном.
Если я что-то пропустил, пожалуйста, оставьте комментарий, и я 'предоставлю все что смогу