鱼C论坛

 找回密码
 立即注册
查看: 14736|回复: 9

[已解决]请问tkinter中怎么获取并显示一个文本内容

[复制链接]
发表于 2017-9-24 16:47:48 | 显示全部楼层 |阅读模式

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

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

x
想用tkinter写一个输入文件地址,点击Buttom能原样显示文件(txt)内容,选中该内容任意一列,点击保存就能生成新文件并保存的程序~
目前我的程序怎么也不显示文本内容,具体程序如下:
from tkinter import *

root=Tk()
root.title('天气预报数据处理窗口')#窗口名字
root.geometry('800x450')#设置主窗口大小

label=Label(root,text="文件名:")
label.grid(row=1,column=0)

v1=StringVar()
e1=Entry(root,textvariable=v1)
e1.grid(row=1,column=2)

v2=StringVar()


def openfile():
    newwindow=Toplevel()
    newwindow.title('天气预报数据',)
    newwindow.geometry('640x40')

    text1=Text(newwindow)

    filename = str(e1.get())

    try:
        with open(filename) as f:
            for each_line in f:
                text1.insert(INSERT,each_line)
    except OSError as reason:
        print('文件不存在!\n请重新输入文件名'+str(reason))
b1=Button(root,text="确认",command=openfile)
b1.grid(row=2,column=2)
mainloop()
还请鱼油们指点一二~~~在此谢过了
最佳答案
2017-9-24 18:55:54
不懂你的意思,这是修改后的代码

  1. from tkinter import *

  2. root=Tk()
  3. root.title('天气预报数据处理窗口')#窗口名字
  4. root.geometry('800x450')#设置主窗口大小

  5. def openfile():
  6.     filename = str(e1.get())
  7.     try:
  8.         with open(filename) as f:
  9.             for each_line in f:
  10.                 text.insert(INSERT,each_line)               
  11.     except OSError as reason:
  12.         print('文件不存在!\n请重新输入文件名'+str(reason))
  13.         
  14. topFrame = Frame(root,bd=1, relief=SUNKEN)
  15. topFrame.pack(fill=BOTH)

  16. bottomFrame = Frame(root,bd=1, relief=SUNKEN)
  17. bottomFrame.pack(fill=BOTH)

  18. label=Label(topFrame,text="文件名:")
  19. label.grid(row=0,column=0, sticky=W)

  20. v1=StringVar()
  21. e1=Entry(topFrame,textvariable=v1)
  22. e1.grid(row=0,column=1,sticky=W)

  23. b1=Button(topFrame,text="确认",command=openfile)
  24. b1.grid(row=0,column=2,padx=5,sticky=W)

  25. text = Text(bottomFrame, height=600)
  26. text.pack(fill=BOTH)


  27. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-9-24 18:55:54 | 显示全部楼层    本楼为最佳答案   
不懂你的意思,这是修改后的代码

  1. from tkinter import *

  2. root=Tk()
  3. root.title('天气预报数据处理窗口')#窗口名字
  4. root.geometry('800x450')#设置主窗口大小

  5. def openfile():
  6.     filename = str(e1.get())
  7.     try:
  8.         with open(filename) as f:
  9.             for each_line in f:
  10.                 text.insert(INSERT,each_line)               
  11.     except OSError as reason:
  12.         print('文件不存在!\n请重新输入文件名'+str(reason))
  13.         
  14. topFrame = Frame(root,bd=1, relief=SUNKEN)
  15. topFrame.pack(fill=BOTH)

  16. bottomFrame = Frame(root,bd=1, relief=SUNKEN)
  17. bottomFrame.pack(fill=BOTH)

  18. label=Label(topFrame,text="文件名:")
  19. label.grid(row=0,column=0, sticky=W)

  20. v1=StringVar()
  21. e1=Entry(topFrame,textvariable=v1)
  22. e1.grid(row=0,column=1,sticky=W)

  23. b1=Button(topFrame,text="确认",command=openfile)
  24. b1.grid(row=0,column=2,padx=5,sticky=W)

  25. text = Text(bottomFrame, height=600)
  26. text.pack(fill=BOTH)


  27. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-9-24 20:43:54 | 显示全部楼层
ba21 发表于 2017-9-24 18:55
不懂你的意思,这是修改后的代码

我说的可能不太清楚,大概意思是:在一个窗口输入文件名后,能够显示文件中的数据,并且能够对显示的数据操作,比如:选中如下数据(有很多行)任意一列或多列数据,点击保存按钮能将选中的数据保存到新文件夹中
50434 121.68  50.48  732 1    0  202    2  345    0 9999 9999   9999 9999 9999 9999  -48 9999 9999  -43 9999 9999 9999 9999
50445 123.73  50.58  423 1 9999  322    1  268    0 9999 9999   9999 9999 9999 9999  -38 9999 9999  -33 9999 9999 9999 9999
50645 124.48  48.48  195 1 9999  144    0  245    0 9999 9999   9999 9999 9999 9999  -36 9999 9999  -32 9999 9999 9999 9999
50647 123.48  48.13  236 1 9999  319    3  245    0 9999 9999   9999 9999 9999 9999  -35 9999 9999  -30 9999 9999 9999 9999
50742 124.48  47.80  162 1    0  167    0  249    0 9999 9999   9999 9999 9999 9999  -36 9999 9999  -32 9999 9999 9999 9999
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-24 20:46:49 | 显示全部楼层
ba21 发表于 2017-9-24 18:55
不懂你的意思,这是修改后的代码

谢谢您的回复~您的答案对我很有帮助
我现在不知道该用什么方法能对显示的数据进行上边说的操作~希望你能指点一下~
谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-24 21:00:04 | 显示全部楼层
Phoebe_Ma 发表于 2017-9-24 20:43
我说的可能不太清楚,大概意思是:在一个窗口输入文件名后,能够显示文件中的数据,并且能够对显示的数据 ...

多行是可以选的,列我不知道你要怎么选
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-24 21:22:39 | 显示全部楼层
ba21 发表于 2017-9-24 21:00
多行是可以选的,列我不知道你要怎么选

那把每一行存入一个列表(像二维数组一样),根据index来选择每行中特定index的数据~这样能做到吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-24 21:29:41 | 显示全部楼层
Phoebe_Ma 发表于 2017-9-24 21:22
那把每一行存入一个列表(像二维数组一样),根据index来选择每行中特定index的数据~这样能做到吗?

一句话
你是不是想把选中的内容保存成另一个文件
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-25 08:52:15 | 显示全部楼层
ba21 发表于 2017-9-24 21:29
一句话
你是不是想把选中的内容保存成另一个文件

是的,但只存选中的列
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-25 09:05:35 | 显示全部楼层
Phoebe_Ma 发表于 2017-9-25 08:52
是的,但只存选中的列

不存在选中的列的说法。 只有鼠标所在的列的说法。

鼠标所在 的列也就只有一列字符如:
1  23
4  56
7  89
第0列到3列有2个空格,3列的数据是 258
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-25 09:51:32 | 显示全部楼层
ba21 发表于 2017-9-25 09:05
不存在选中的列的说法。 只有鼠标所在的列的说法。

鼠标所在 的列也就只有一列字符如:

谢谢您~是我理解错了~我不应该对显示在Text框中的数据操作,而是应该用库函数操作原始文件中的数据~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-2 15:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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