python-3.x - 组合框从 Tkinter 中的 csv 文件中输入空字段
问题描述
enter code here
import tkinter as tk
import tkinter.ttk as ttk
import csv
class Application(tk.Frame):
def __init__(self, root):
self.root = root
self.initialize_user_interface()
def initialize_user_interface(self):
self.button2 = tk.Button(self.root, text="Summary", command=self.summary_data)
self.button2.grid(row=0, column=1)
def summary_data(self):
n = tk.StringVar(value="choose location")
summarychoosen = ttk.Combobox(self.root, width = 20, textvariable = n);
summarychoosen.grid(row=1, column=1, sticky="wesn")
with open('UI_LLD.csv') as f:
reader = csv.DictReader(f, delimiter=',')
for row in reader:
aSummary = row['Summary']
print(aSummary)
summarychoosen['values'] = [row['Summary']for row in reader]
app = Application(tk.Tk())
app.root.mainloop()
问题:
Combox 也在使用空单元格。在我的应用程序中,我只需要验证字符串作为组合框列表
在列表中,第一个条目是不可见的
解决方案
仔细查看 for 循环:
for row in reader:
aSummary = row['Summary'] # read the first line
print(aSummary)
# read the remaining lines
summarychoosen['values'] = [row['Summary']for row in reader]
因此,选择列表中缺少第一个条目。
实际上,您可以删除 for 循环,但只保留 for 循环中的最后一行:
with open('UI_LLD.csv') as f:
reader = csv.DictReader(f, delimiter=',')
# added "if" to filter out empty lines
summarychoosen['values'] = [row['Summary'] for row in reader if row['Summary'].strip()]
推荐阅读
- spring-boot - 嵌入在 Spring Boot Rest API 中的 Spring Cloud Gateway
- c# - Regex.IsMatch 导致灾难性的回溯
- excel - 使用 VBA 创建的 Excel 复选框不成比例
- java - 屏幕更改时的Libgdx,套接字事件仍在前一个屏幕中运行
- java - maven-assembly-plugin 被忽略了吗?
- heroku - 有没有办法在 Heroku 上运行 ssh 命令?
- reactjs - 从 3.3.0 降级回 3.2.0 后的 Create-react-app linting 警告
- javascript - 过期后设置字段(MongoDB)
- python - raise ApiClientException(message) geolocation.exceptions.ApiClientException: 请求被拒绝
- sql - 从 Excel 97-2003 导入 SQL