鱼C论坛

 找回密码
 立即注册
查看: 1757|回复: 5

[已解决]关于tkinter读取文件名的问题

[复制链接]
发表于 2020-5-7 16:15:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import tkinter as tk
from tkinter import *
import openpyxl as xl
import datetime as tm
import xlwt
import os

win = tk.Tk()
win.title("管理系统")
win.geometry("800x700")

lb = tk.Label(win, text="请选择", bg="green", font=("宋体", 48), width=15, height=1)
lb.pack()

var1 = tk.StringVar()
lbox = tk.Listbox(win, listvariable=var1, font=("宋体", 24))

for i in os.listdir("D:\\例子\"):  # 获取文件夹名称加后缀
    lbox.insert("end", i)
    lbox.pack()

var2 = tk.StringVar
value = lbox.get(lbox.curselection())
var2.set(value)


def hit_queren():
    pass
b1 = tk.Button(win, text="确认", font=("宋体", 26), width=15, height=1,
                    command=hit_queren)
b1.place(x=250, y=500)

win.mainloop()



想做一个直接向特定excel文件中插入内容的窗口,
首先要读取出文件夹中的文件,然后点击确认会弹出输入内容的子窗口
现在文件名用listdir方式读取后,想get到文件名,最后再把子窗口内容插入到get到指定文件名的excel中
结果报错tkinter.TclError: bad listbox index "": must be active, anchor, end, @x,y, or a number
是因为get不了后缀名称吗,如果是的话,如何只读取文件名称。。。。
或者说还有其他方法实现向多个excel文件中指定文件插入内容的方法?
求指教
最佳答案
2020-5-7 16:19:02
StringVar 需要先实例化再使用,还有 lbox.curselection() 的返回值为空字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-7 16:19:02 | 显示全部楼层    本楼为最佳答案   
StringVar 需要先实例化再使用,还有 lbox.curselection() 的返回值为空字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 16:38:03 | 显示全部楼层
.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-7 17:00:51 | 显示全部楼层
zltzlt 发表于 2020-5-7 16:19
StringVar 需要先实例化再使用,还有 lbox.curselection() 的返回值为空字符串

新手,这样说不太明白额,方便直接写进去,然后我自己消化吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 21:17:44 | 显示全部楼层
import tkinter as tk
from tkinter import *
import openpyxl as xl
import datetime as tm
import xlwt
import os

win = tk.Tk()
win.title("管理系统")
win.geometry("800x700")

lb = tk.Label(win, text="请选择", bg="green", font=("宋体", 48), width=15, height=1)
lb.pack()

var1 = tk.StringVar()
lbox = tk.Listbox(win, listvariable=var1, font=("宋体", 24))

for i in os.listdir("D:\\例子\"):  # 获取文件夹名称加后缀
    lbox.insert("end", i)
    lbox.pack()

#var2 = tk.StringVar
#value = lbox.get(lbox.curselection())
#var2.set(value)


def hit_queren():
    pass
b1 = tk.Button(win, text="确认", font=("宋体", 26), width=15, height=1,
                    command=hit_queren)
b1.place(x=250, y=500)

win.mainloop()


是不是 for i in os.listdir("D:\\例子\\"):  # 获取文件夹名称加后缀
          lbox.insert("end", i)
          lbox.pack()
这样获取的列表含有后缀,影响
         value = lbox.get(lbox.curselection())
的获取
怎样能获取不含后缀名的文件名列表呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 21:35:10 | 显示全部楼层
zltzlt 发表于 2020-5-7 16:19
StringVar 需要先实例化再使用,还有 lbox.curselection() 的返回值为空字符串
import tkinter as tk
from tkinter import *
import openpyxl as xl
import datetime as tm
import xlwt
import os
win = tk.Tk()
win.title("管理系统")
win.geometry("800x700")
var1 = tk.StringVar()
l = tk.Label(win,bg="yellow",width=4,textvariable=var1)
l.pack()
def pringt_selection():
    value = lb.get(lb.curselection())
    var1.set(value)

b1 = tk.Button(win,text="111",width=15,height=2,command=pringt_selection)
b1.pack()

var2=tk.StringVar()
#var2.set((11,22,33,44))

lb=tk.Listbox(win,listvariable=var2)
for i in os.listdir("D:\\例子\"):
    lb.insert("end",i)
lb.pack()

win.mainloop()

这样简化后发现能get出值来。。。。谢了,我在摸索摸索
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 05:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表