Можно ли заполнить комбинированный список Python tkinter из текстового файла? - PullRequest
0 голосов
/ 25 апреля 2019

Кодирование новичка здесь, попытка справиться с Python 3.

Возможно ли заполнить tkinter Combobox значениями из одного слова, считанными из текстового файла?

Что яВам бы хотелось заменить жестко закодированные значения «рыба», «птицы» и т. д. (см. ниже) значениями, считанными из текстового файла (каждое слово в отдельной строке).Я читал о словарях, массивах и так далее, и все, что я сделал, это запутал себя!

Заранее спасибо.

Этот фрагмент работает с жестко закодированными комбинированными значениями.Как я могу изменить его, прочитав значения из файла, пожалуйста?

# imports

import tkinter as tk
from tkinter import ttk

# Create instance
win = tk.Tk()   

# Add a title       
win.title("Combo Test")


# Creature Drop Down
ttk.Label(win, text="Select Creature").grid(column=1, row=3)
creature_box = tk.StringVar()
creature_chosen = ttk.Combobox(win, width=20, state='readonly')
creature_chosen['values'] = ('Fish', 'Birds', 'Insects', 'Reptiles')
creature_chosen.grid(column=2, row=3)
creature_chosen.current(0)

# Start GUI
win.mainloop()

1 Ответ

0 голосов
/ 25 апреля 2019

Вы можете легко сохранить эти значения в файле txt и прочитать их оттуда. Учитывая, что содержимое файла отформатировано следующим образом:

Fish
Birds
Insects
Reptiles

Вы можете изменить свой код следующим образом:

# imports
import tkinter as tk
from tkinter import ttk

# Read values from file
creatures = []
with open('data.txt') as inFile:
    creatures = [line for line in inFile]


# Create instance
win = tk.Tk()   

# Add a title       
win.title("Combo Test")


# Creature Drop Down
ttk.Label(win, text="Select Creature").grid(column=1, row=3)
creature_box = tk.StringVar()
creature_chosen = ttk.Combobox(win, width=20, state='readonly')
creature_chosen['values'] = tuple(creatures)
creature_chosen.grid(column=2, row=3)
creature_chosen.current(0)

# Start GUI
win.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...