Tkinter使用filedialog读入JSON文件返回文件流如何处理

Tkinter使用filedialog读入JSON文件返回文件流如何处理

目的:把文件流转换成Python易于处理的List或字典,便于将来遍历,插入MongoDB

代码如下:

def openfile():
   file_in=tkinter.filedialog.askopenfile(title="打开一个Json文件",filetypes=[("JSON",".json")])
   data=[]
   for line in file_in.readLines():
      dic = json.loads(line)
      data.append(dic)
   print(len(data))

目前程序报错:AttributeError: '_io.TextIOWrapper' object has no attribute 'readLines'

我知道是文件流没有这个方法,我想知道如何处理

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python3 tkinter 在指定文件夹内查找所有文件 是否包含关键字
关键字 通过entry 输入 ,关键字为:entry.get() 指定文件夹通过path = tkinter.filedialog.askdirectory()获取地址 怎么能够查找包含关键字的文件?
tkinter 双击 打开文件
我现在想做一个软件,用python的tkinter查找文件,找到以后双击就可以打开。 怎么处理? ``` # coding:utf-8 #usr/bin/env python from Tkinter import * import tkFileDialog #弹出选择路径的库 import tkMessageBox import os import fnmatch #选择文件的关键词 def left(): if not entry.get() :#检测关键词输入框是否为空 tkMessageBox.showerror("提示信息:","出现以下错误:\n关键词不能为空")#弹出警告框 return #如果为空不再执行 list_box.delete(0,END) path = tkFileDialog.askdirectory()#弹出选择路径的窗口,path为获取的路径 path_list = os.walk(path)#获取一个列表目录的对象 for root, dirs, files in path_list: #print root, dirs, files for i in files: if(entry.get()==os.path.splitext(i)[0]): list_box.insert(END, root+"/"+i) ?????? root = Tk() root.title('文件搜索')#创建窗口 root.geometry('+400+200')#窗口大小,窗口位置 #1.输入关键词 Label(text=' 关键词: ').grid(row=0,column=0)# 创建标签 entry = Entry()#输入框实例化 entry.grid(row=0,column=1)#输入框 Button(text=' 选择文件夹', command=left).grid(row=0,column=4)#按钮 list_box = Listbox(width=80) list_box.grid(row=1, column=0, columnspan=5)#显示列表框 loop = mainloop()#显示窗口 ``` 在中间的??????位置应该用什么代码 可以双击得到的文件,就可以打开了
python2 中tkinter 打开文件 中文乱码
这个程序的目的是写一个文件树软件,通过“打开”button 打开地址对话框,选择文件夹。如果是文件夹 双击则继续打开 如果是文件 双击则打开文件。 (双击打开文件还没写) 现在打开文件夹之后 很多地方显示乱码,而且打开某一个文件并不是马上显示出文件夹中所有文件,需要点进去再退回来才能显示。 现在程序应该有不少错误,一点点改吧。 首先请问大神 怎么解决中文乱码问题? 在运行的时候提示这种错误语言: Traceback (most recent call last): File "D:\Python27\lib\lib-tk\Tkinter.py", line 1547, in __call__ return self.func(*args) File "d:\Untitled-1.py", line 28, in setDirAndGo doLS() File "d:\Untitled-1.py", line 52, in doLS cwd.set(os.getcwd()+'\\'+tdir) UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 3: ordinal not in range(128) ``` #!/usr/bin/env python # -*- coding: utf-8 -*- import os from time import sleep from Tkinter import * import tkFileDialog #弹出选择路径的库 import tkMessageBox import fnmatch #选择文件的关键词 def dakai(): dirs.delete(0,END) default_dir = r"C:\Users\lenovo\Desktop" # 设置默认打开目录 path = tkFileDialog.askdirectory(title=u"选择文件", initialdir=(os.path.expanduser(default_dir))) doLS1(path) #双击时调用,双击时,设置背景色为红色,并调用doLS函数打开所选文件 def setDirAndGo(ev=None): last = cwd.get() dirs.config(selectbackground='red') check = dirs.get(dirs.curselection()) if not check: check = os.curdir cwd.set(check) doLS() #实现更新目录的核心函数 def doLS(ev=None): error = '' tdir = cwd.get() if not tdir:tdir=os.curdir #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息 if not os.path.exists(tdir): error = os.getcwd()+'\\'+tdir + ':未找到文件' elif not os.path.isdir(tdir): error = os.getcwd()+'\\'+tdir + ':未找到目录' if error: cwd.set(error) top2.update() sleep(1) if not (last): last = os.curdir cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') dirn.config(text=os.getcwd()+'\\'+tdir) top2.update() return cwd.set(os.getcwd()+'\\'+tdir) top2.update() dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 dirlist.sort() os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。 #更新界面上方标签内容 dirl.config(text=os.getcwd().decode("gbk").encode("utf-8")) top2.update() dirs.delete(0,END) dirs.insert(END,os.pardir)#os.chdir(os.pardir) 切换到上级目录 即将上级目录.. 插入到dirs对象中 #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中 for eachFile in dirlist: dirs.insert(END,eachFile.decode("gbk").encode("utf-8")) #先解码 再编码 bingo! cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') def doLS1(path): error = '' tdir = path if not tdir:tdir=os.curdir #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息 if not os.path.exists(tdir): error = os.getcwd()+'\\'+tdir + ':未找到文件' elif not os.path.isdir(tdir): error = os.getcwd()+'\\'+tdir + ':未找到目录' if error: cwd.set(error) top2.update() sleep(1) if not (last): last = os.curdir cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') dirn.config(text=os.getcwd()+'\\'+tdir) top2.update() return cwd.set(os.getcwd()+'\\'+tdir) top2.update() dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 dirlist.sort() os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。 #更新界面上方标签内容 dirl.config(text=os.getcwd().decode("gbk").encode("utf-8")) top2.update() dirs.delete(0,END) dirs.insert(END,os.pardir)#os.chdir(os.pardir) 切换到上级目录 即将上级目录.. 插入到dirs对象中 #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中 for eachFile in dirlist: dirs.insert(END,eachFile.decode("gbk").encode("utf-8")) cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') top2 = Tk() top2.title('营销集约管控中心-文件树') cwd = StringVar(top2) dirl = Label(top2,fg = 'blue') dirl.pack() dirfm = Frame(top2) dirsb = Scrollbar(dirfm) dirsb.pack(side=RIGHT,fill=Y) dirs = Listbox(dirfm,height=15,width=50,yscrollcommand=dirsb.set) #通过使用List的bind()方法,将鼠标双击事件绑定,并调用setDirAndGo函数 dirs.bind('<Double-1>',setDirAndGo) # 下面实现单击时,将所选文件路径加名字更新到下方输入框控件中,不能用self.dirs.bind('<Button-1>', self.setDirn)绑定单击事件,会出错 #dirs.bind("<<ListboxSelect>>", setDirn) dirsb.config(command=dirs.yview) dirs.pack(side=LEFT,fill=BOTH) dirfm.pack() #第二个框架bfm,放置按钮 bfm = Frame(top2) open = Button(bfm,text='打开',command=dakai,activeforeground='white',activebackground='blue') open.pack(side=LEFT) bfm.pack() if __name__ =='__main__': #设定初始目录为桌面 mainloop() ```
使用textvariable给Entry赋值,如何将文本框里的文件路径 赋给变量 ,后续需要对路径里的文件进行处理?
1、想要用python实现读取文件路径的交互UI,使用tkinker,已经完成了一部分,代码如下:遇到问题,不知道怎么将路径转换为变量用pandas读取。 2、代码如下: # -*- coding: cp936 -*- from tkinter import * from tkinter import filedialog, ttk #定义打开文件路径的4个函数 def selectPath1(): path1_ = filedialog.askopenfilename() path1.set(path1_) def selectPath2(): path2_ = filedialog.askopenfilename() path2.set(path2_) def selectPath3(): path3_ = filedialog.askopenfilename() path3.set(path3_) def selectPath4(): path4_ = filedialog.askopenfilename() path4.set(path4_) win = Tk() win.title("故障日报生成小工具") W=500 H=300 screenwidth=win.winfo_screenwidth() screenheight=win.winfo_screenheight() x=screenwidth/2-W/2 y=screenheight/2-H/2 win.geometry("%dx%d+%d+%d"%(W,H,x,y)) # win.resizable(0,0) Label(win, text='故障日报生成小工具', font=('Arial', 20)).pack() frm = Frame(win) #left frm_L = Frame(frm) frm_L_1=Frame(frm_L) #设置第一个按钮和文本框 button1 = ttk.Button(frm_L_1, text="打开小区状态表", width=20, command=selectPath1) button1.pack(side=LEFT) path1 = StringVar() entry1 = Entry(frm_L_1, textvariable = path1) entry1.pack(side=RIGHT) frm_L_1.pack(side=TOP) #设置第二个按钮和文本框 frm_L_2=Frame(frm_L) button2 = ttk.Button(frm_L_2, text="打开当前告警", width=20, command=selectPath2) button2.pack(side=LEFT) path2 = StringVar() entry2 = Entry(frm_L_2, textvariable = path2) entry2.pack(side=RIGHT) frm_L_2.pack(side=TOP) #设置第三个按钮和文本框 frm_L_3=Frame(frm_L) button3 = ttk.Button(frm_L_3, text="打开前一日告警日报", width=20, command=selectPath3) button3.pack(side=LEFT) path3 = StringVar() entry3 = Entry(frm_L_3, textvariable = path3) entry3.pack(side=RIGHT) frm_L_3.pack(side=TOP) #设置第四个按钮和文本框 frm_L_4=Frame(frm_L) button4 = ttk.Button(frm_L_4, text="打开TD-LTE小区表", width=20, command=selectPath4) button4.pack(side=LEFT) path4 = StringVar() entry4 = Entry(frm_L_4, textvariable = path4) entry4.pack(side=RIGHT) frm_L_4.pack(side=TOP) frm_L.pack(side=LEFT) #right frm_R = Frame(frm) button5 = ttk.Button(frm_R, text="运行", width=20, command=lambda:xxx) button5.pack(side=TOP) button6 = ttk.Button(frm_R, text="退出", width=20, command=quit) button6.pack(side=TOP) frm_R.pack(side=RIGHT) frm.pack() win.mainloop() 试过用Entry.get()但获取不到。 自学PYTHON,用于提升工作效率,还请多多指教
一个小白求教如何使用Tkinter导入图片
本人是一个刚开始学习是用python的小白,目前自学到使用Tkinter在窗口上导入一张图片,但是无论如何都成功不了。 1.当我把文件的具体路径输入时,会出现下图的情况! ![图片说明](https://img-ask.csdn.net/upload/201906/17/1560756089_935794.jpg) 2.当我将文件复制到与py文件所在文件夹时,pycharm没有报错,窗口也能弹出,但是没有图片,如下图。 ![图片说明](https://img-ask.csdn.net/upload/201906/17/1560756362_903336.jpg) 求指导,不甚感激!
python中把中文文件读入tkinter里的Text里面怎么读?
from tkinter import* def main(): ftele1=open('wen.txt','rb') lines1 = ftele1.readlines() list1= [] for line in lines1: elements = line.split() list1.append(str(elements.decode('gbk'))) #这里肯定有问题,希望给个方法 for i in list1: t.insert(END,i) root=Tk() t = Text(root, width=16, height=8) t.pack(expand=1, fill="both") main() mainloop()
Mac Python3.7, pyinstaller 生成的exe文件无法执行,报错Failed to execute script pyi_rth__tkinter
小白最近在学python,学到了pyinstaller,好不容易安装成功,结果生成的exe文件无法运行,报错Failed to execute script pyi_rth__tkinter。![图片说明](https://img-ask.csdn.net/upload/201910/19/1571452042_240598.png) 这里是我build文件夹里warn的内容。 ![图片说明](https://img-ask.csdn.net/upload/201910/19/1571452156_472081.png) 在google上搜了好久都没找到解决方案,伤心了,求大神解答。
缺少 numpy.random.common
我使用python的tkinter编写了一个程序,用pyinstaller编译之后,程序提示 failed to execute script 文件名 错误提示: no module named 'numpy.random.common' 可是我重新pip numpy模块还是不好用 请问怎么解决? ``` #!/usr/bin/python # -- coding: utf-8 -- import fnmatch #选择文件的关键词 import os from time import sleep from tkinter import * import tkinter.filedialog #弹出选择路径的库 import tkinter.messagebox import fnmatch #选择文件的关键词 import re import pandas as pd import docx import pickle import codecs import string import shutil from win32com import client as wc def matchdocname(str1,root,i,list_box): if str1 in os.path.splitext(i)[0]: list_box.insert(END, root+"/"+i) def matchdoccontent(str1,root,i,list_box): if i.endswith('txt'): #当文件为txt时 with open(os.path.join(root, i) ,'r') as fp: errors='' aa=fp.read() if str1 in aa : list_box.insert(END, root+"/"+i) if i.endswith('xls') or i.endswith('xlsx') : #当文件为excel时 df=pd.read_excel(os.path.join(root, i)) df=df.values for k in df: for j in k: j=str(j) if str1 in j: list_box.insert(END, root+"/"+i) if i.endswith('docx'): #当文件为.docx时 word = wc.Dispatch('Word.Application') doc = word.Documents.Open(os.path.join(root, i)) newname=os.path.join(root, i)+"(translate txt)" doc.SaveAs(newname,4) doc.Close() word.Quit() with open(newname ,'r') as fp: errors='' aa=fp.read() if str1 in aa : list_box.insert(END, root+"/"+i) os.remove(newname) if i.endswith('doc'): #当文件为.doc时 word = wc.Dispatch('Word.Application') doc = word.Documents.Open(os.path.join(root, i)) newname=os.path.join(root, i)+"(translate txt)" doc.SaveAs(newname,4) doc.Close() word.Quit() with open(newname ,'r') as fp: errors='' aa=fp.read() if str1 in aa : list_box.insert(END, root+"/"+i) os.remove(newname) #删掉这个临时文件 def left(): if not entry.get() :#检测关键词输入框是否为空 tkinter.messagebox.showerror("提示信息:","出现以下错误:\n关键词不能为空")#弹出警告框 return #如果为空不再执行 if var1.get()==0 and var2.get()==0 : tkinter.messagebox.showerror("提示信息:","出现以下错误:\n匹配项不能为空")#弹出警告框 return #如果为空不再执行 list_box.delete(0,END) path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径 path_list = os.walk(path)#获取一个列表目录的对象 for root, dirs, files in path_list: #print root, dirs, files if var1.get()==1 and var2.get()==0: #当只匹配文件名时 list_box.insert(END, '文件名') for i in files: matchdocname(entry.get(),root,i,list_box) elif var1.get()==0 and var2.get()==1: #当只匹配文件内容时 list_box.insert(END, '文件内容') for i in files: matchdoccontent(entry.get(),root,i,list_box) elif var1.get()==1 and var2.get()==1: #当既匹配文件名又匹配文件内容时 list_box.insert(END, '文件名') for i in files: matchdocname(entry.get(),root,i,list_box) list_box.insert(END, '--------------') list_box.insert(END, '文件内容') for i in files: matchdoccontent(entry.get(),root,i,list_box) def func2(e): if not list_box.curselection():#取双击的坐标52 return path = list_box.get(list_box.curselection(),last=None) os.startfile(path) def nagea(e): error = '' tdir = dirs.get(dirs.curselection()) if os.path.isfile(tdir): #如果是文件 则打开 os.startfile(tdir) elif os.path.isdir(tdir): #如果是文件夹 则调用dols setDirAndGo() def wenjianshu(): dirs.delete(0,END) path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径 doLS1(path) #双击时调用,双击时,设置背景色为红色,并调用doLS函数打开所选文件 def setDirAndGo(ev=None): last = cwd.get() dirs.config(selectbackground='red') check = dirs.get(dirs.curselection()) if not check: check = os.curdir cwd.set(check) doLS() #实现更新目录的核心函数 def doLS(ev=None): error = '' tdir = cwd.get() if not tdir:tdir=os.curdir #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息 if not os.path.exists(tdir): error = os.getcwd()+'\\'+tdir + ':未找到文件' elif not os.path.isdir(tdir): error = os.getcwd()+'\\'+tdir + ':未找到目录' if error: cwd.set(error) top2.update() sleep(1) cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') top2.update() return cwd.set(os.getcwd()+'\\'+tdir) top2.update() dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 dirlist.sort() os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。 #更新界面上方标签内容 dirl.config(text=os.getcwd()) top2.update() dirs.delete(0,END) dirs.insert(END,os.pardir)#os.chdir(os.pardir) 切换到上级目录 即将上级目录.. 插入到dirs对象中 #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中 for eachFile in dirlist: dirs.insert(END,eachFile) cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') def doLS1(tdir): error = '' if not tdir:tdir=os.curdir #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息 if not os.path.exists(tdir): error = os.getcwd()+'\\'+tdir + ':未找到文件' elif not os.path.isdir(tdir): error = os.getcwd()+'\\'+tdir + ':未找到目录' if error: cwd.set(error) top2.update() sleep(1) cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') top2.update() return cwd.set(os.getcwd()+'\\'+tdir) top2.update() dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 dirlist.sort os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。 #更新界面上方标签内容 dirl.config(text=os.getcwd()) top2.update() dirs.delete(0,END) dirs.insert(END,os.pardir)#os.chdir(os.pardir) 切换到上级目录 即将上级目录.. 插入到dirs对象中 #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中 for eachFile in dirlist: dirs.insert(END,eachFile) cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') top2 = Tk() top2.title('营销集约管控中心-文件管理') top2.geometry('+50+50')#窗口大小,窗口位置 cwd = StringVar(top2) var=IntVar() dirl = Label(top2,fg = 'BLUE',font = ('Helvetica',18,'bold')) dirl.pack() dirfm = Frame(top2) dirs = Listbox(dirfm,height=25,width=90) #通过使用List的bind()方法,将鼠标双击事件绑定,并调用setDirAndGo函数 dirs.bind('<Double-1>',nagea) dirs.pack(side=LEFT,fill=BOTH) list_box = Listbox(dirfm,height=25,width=90) list_box.bind('<Double-Button-1>',func2) #绑定一个双击触发事件 list_box.pack(side=LEFT,fill=BOTH)#显示列表框 dirfm.pack() #第二个框架bfm,放置按钮 bfm = Frame(top2) open1 = Button(bfm,text='文件树',command=wenjianshu,activeforeground='white',activebackground='blue') open1.pack(side=LEFT) bfm.pack(side=LEFT,fill=BOTH) #多选框插件 var1 = tkinter.IntVar() # 用来储存下面勾选项1中返回的0或1 var2 = tkinter.IntVar() # 用来储存下面勾选项2中返回的0或1 button2=tkinter.Checkbutton(top2,text="匹配文件内容",variable=var2,onvalue=1,offvalue=0) button2.pack(side=RIGHT,fill=BOTH) button1=tkinter.Checkbutton(top2,text="匹配文件名",variable=var1,onvalue=1,offvalue=0) button1.pack(side=RIGHT,fill=BOTH) #按钮控件 entry = Entry()#输入框实例化 entry.pack(side=RIGHT,fill=BOTH)#输入框 button2=Button(top2,text="关键字",command=left) button2.pack(side=RIGHT,fill=BOTH) if __name__ =='__main__': #设定初始目录为桌面 mainloop() ```
tkinter模块messagebox可以弹出对话框,为什么dic(tkinter)找不到messagebox?
tkinter模块messagebox可以弹出对话框,为什么dic(tkinter)找不到messagebox?
tkinter程序运行时报错
学习tkinter项目,照着老师写的代码写却仍然报错.具体代码如下: ![图片说明](https://img-ask.csdn.net/upload/201912/17/1576544180_961000.jpg) 运行的时候标黄色的那一行总是报错如下: File "E:/Program Files/Python/FollowMyHeart/GUI/Phase6/Demo.py", line 21, in addfile info['text'] = '\n'.join(filelists) NameError: name 'info' is not defined 按说label_info都已经定义过了.老师写的代码也是可以运行的.为什么在我的电脑就就运行不了呢
大神请问下tkinter的这种格式为什么获取不到entry的值
这个代码为啥获取不到值呢? 获取到的是空值 代码如下: import tkinter root = tkinter.Tk() root.geometry("500x400") def abc(): global s v = tkinter.StringVar() e = tkinter.Entry(root, textvariable=v) e.pack() s = v.get() def aaa(): print(s) but1 = tkinter.Button(root,text = "点",command = abc) but2 = tkinter.Button(root,text = "获取",command = aaa) but1.pack() but2.pack() root.mainloop()
python中用tkinter加email写邮件发送系统
用tkinter的button添加文件 但是email模块中都是对单一文件处理的函数 有没有可以处理任意文件格式的函数 还是需要用后缀名去判断格式 然后再用相应的函数?求解。
python中tkinter自带的下载文件进度条
![图片说明](https://img-ask.csdn.net/upload/201708/01/1501574065_29575.jpg) 大神们,像这样的进度条怎么做啊,需要什么模块
tkinter askopenfilename打开时窗体上不显示地址栏?
使用pyinstaller打包 使用pyinstaller -F xxx.py打包时,会出现很多警告。 运行打包的exe时,打开文件窗口不显示地址栏![图片说明](https://img-ask.csdn.net/upload/201911/22/1574391799_326503.jpg) 但使用pyinstaller -F -i xxx.ico xxx.py打包时,只是改了一下图标,警告就没那么多,而且exe打开文件窗口时就有地址栏了,搞不明白这是为什么? ![图片说明](https://img-ask.csdn.net/upload/201911/22/1574391902_369113.jpg)
关于python,tkinter中的messagebox
![图片说明](https://img-ask.csdn.net/upload/201912/01/1575190545_552212.png) 这个对话框中,想要实现功能: 1、点击“是”后,弹出电影连接或者直接播放电影 2、点击“否”或“取消”后,关闭当前窗口 怎么样可以实现?? 怎样可以对点击后的返回值进行处理啊???
萌新求助一个关于Tkinter显示图片的问题
我想做一个改变图片大小的函数,但是问题是,只显示最后一张图片 代码是这个样子的: ``` from Tkinter import * from PIL import Image, ImageTk from photoResize import resize def change(photo): w, h = photo.size w_box=40 h_box=40 global photo_resized,photo_image,photoLabel photo_resized = resize(w, h, w_box, h_box, photo) photo_image = ImageTk.PhotoImage(photo_resized) photoLabel = Label(f, image=photo_image, width=w_box, height=h_box) return photoLabel r=Tk() f=Frame(r,width=600,height=150,relief="groove") f.grid() Q = Image.open(r'Q.gif') QLabel = change(Q) QLabel.grid(row=1,column=0) W = Image.open(r'W.gif') WLabel = change(W) WLabel.grid(row=1,column=1) r.mainloop() ``` 这个代码目前放进来两张图片,但是运行以后只显示最一张“W.gif”![图片说明](https://img-ask.csdn.net/upload/201912/10/1575947715_407170.png) 但是如果我删掉代码中的 ``` W = Image.open(r'W.gif') WLabel = change(W) WLabel.grid(row=1,column=1) ``` 显示出的就是第一张图片了 ![图片说明](https://img-ask.csdn.net/upload/201912/10/1575947804_134019.png)
python、tkinter中,循环方式使用lambda传递参数,为什么只传了最后一个
导入tkinter,制作几个按钮,点击每个按钮时打印出一个变量值,我期待的效果是:三个按钮分别打印出0,1,2。但结果,得到的都是2。lambda传值怎么会这样??搞不懂,哪位老师赐教一下 import tkinter as tk mywin = tk.Tk() def fun(val): print(val) for i in range(0,3): tk.Button(mywin, text='btn'+str(i), width=20, height=2, command=lambda:fun(i)).pack() mywin.mainloop() Italink 老师说lambda传值是传的变量i的引用,那么怎么样让lambda传递i的值,而不是i的引用呢?? tk.Button(mywin, text='btn'+str(i), width=20, height=2, command=lambda:fun(i)).pack() 这句要怎么写才行呢? Italink 老师能再说的细一点吗? 我初学Python, 不懂的地方多......
Python tkinter图形界面BUTTON事件控制和编辑框返回值出现异常
使用win7的Python3.73的IDLE界面编写图形界面程序,在编码过程中发现,如果定义一个主窗口后再定义一个局部窗口会导致后面的窗口的编辑框设置和取值异常。具体问题用一个测试程序来说明如下: ``` import tkinter as tk from tkinter import messagebox def newwin(title='test',geometry='300x300'): def ShowMessage(): tk.messagebox.showinfo(input.get()) window = tk.Tk() window.title(title) window.geometry(geometry) input = tk.StringVar() input.set('请输入任意内容!') tk.Label(window, text='请输入任意内容: ').place(x=10, y= 10) entry_new_name = tk.Entry(window, textvariable=input) entry_new_name.place(x=150, y=10) btn_show = tk.Button(window, text='显示输入', command=ShowMessage) btn_show.place(x=80, y=90) btn_newwin = tk.Button(window, text='新弹窗', command=newwin) btn_newwin.place(x=150, y=90) btn_exit = tk.Button(window, text='退出', command=exit) btn_exit.place(x=220, y=90) return window root = newwin() root.mainloop() ``` 上述代码执行后,显示一个窗口,内有:一个输入框,三个按钮,一个是显示输入框内容,一个是再次新建一个同样的窗口,一个是系统退出。执行后第一次打开窗口时相关功能正常,但当选择“新弹窗”弹出一个新的窗口后,编辑框的初始内容没有显示,且输入内容后,在新窗口显示编辑框的内容取得的值为变量初始化的值,没有取得新的输入。 关于以上代码,有如下几个问题: 1、为什么新弹窗中编辑框的显示和变化没有和变量关联起来? 2、上述代码中btn_newwin按钮定义如果改为:“btn_newwin = tk.Button(window, text='新弹窗', command=newwin)”中,如果newwin使用带实参格式,则会导致一启动就会不停新建窗口,导致递归调用过深异常出现才终止?这是为什么 ? 3、该代码存储到文件后,使用dos命令行方式执行文件无任何反应。是图形界面的程序无法在非图形界面解释器下执行吗?该怎么解决? 非常抱歉,本人没有C币,不知可有哪位大拿免费指教?谢谢!
求问,用tkinter画一个界面,如何改变菜单栏的state属性?求大神!求!
最开始设置了两个菜单的state状态是disabled,点不了,希望用户点了主菜单的选择工程之后,两个菜单的状态变成normal可以点击 ![图片说明](https://img-ask.csdn.net/upload/201911/29/1574995783_889057.png) 代码如下: import os, sys from tkinter.font import Font from tkinter import * from tkinter.ttk import * from tkinter.messagebox import * class Application_ui(Frame): #这个类仅实现界面生成功能,具体事件处理代码在子类Application中。 def __init__(self, master=None): Frame.__init__(self, master) self.master.title('海港高桩码头结构安全评估及预警平台') self.master.geometry('808x447') self.createWidgets() def createWidgets(self): self.top = self.winfo_toplevel() self.style = Style() #主菜单 self.MainMenu = Menu(self.top, tearoff=0) self.top['menu'] = self.MainMenu self.Sysmenu = Menu(self.MainMenu, tearoff=0) self.MainMenu.add_cascade(menu=self.Sysmenu, label='主菜单[M]', underline=4) self.Choose_project = Menu(self.Sysmenu, tearoff=0) self.Sysmenu.add_cascade(menu=self.Choose_project, label='选择工程') self.Choose_project.add_command(label='天津港南疆27#通用码头工程', command=self.My_project_Cmd) self.Choose_project.add_command(label='其它', state='disabled', command=self.Other_project_Cmd) self.Sysmenu.add_command(label='返回主界面', accelerator='Ctrl-B', command=self.Return_mainform_Cmd) self.top.bind_all('<Control-B>', self.Return_mainform_Cmd) self.top.bind_all('<Control-b>', self.Return_mainform_Cmd) self.Sysmenu.add_command(label='退出程序[X]', accelerator='Ctrl-X', command=self.Exit_program_Cmd) self.top.bind_all('<Control-X>', self.Exit_program_Cmd) self.top.bind_all('<Control-x>', self.Exit_program_Cmd) #安全评估 self.Safe_assess = Menu(self.MainMenu, tearoff=0) self.MainMenu.add_cascade(menu=self.Safe_assess, label='安全评估[A]', state='disabled', underline=5) self.Safe_assess.add_command(label='码头结构示意图', accelerator='Ctrl-P', command=self.Show_picture_Cmd) self.top.bind_all('<Control-P>', self.Show_picture_Cmd) self.top.bind_all('<Control-p>', self.Show_picture_Cmd) self.Safe_assess.add_command(label='码头结构安全评估', accelerator='Ctrl-M', command=self.My_assess_Cmd) self.top.bind_all('<Control-M>', self.My_assess_Cmd) self.top.bind_all('<Control-m>', self.My_assess_Cmd) # 预警系统 self.Warn_sys = Menu(self.MainMenu, tearoff=0) self.MainMenu.add_cascade(menu=self.Warn_sys, label='预警系统[W]', state='disabled', underline=5) self.Warn_sys.add_command(label='码头结构安全预警', accelerator='Ctrl-J', command=self.Warn_wharf_Cmd) self.top.bind_all('<Control-J>', self.Warn_wharf_Cmd) self.top.bind_all('<Control-j>', self.Warn_wharf_Cmd) self.Warn_sys.add_command(label='岸坡安全预警', accelerator='Ctrl-O', command=self.Warn_slope_Cmd) self.top.bind_all('<Control-O>', self.Warn_slope_Cmd) self.top.bind_all('<Control-o>', self.Warn_slope_Cmd) #安全日志及帮助 self.MainMenu.add_command(label='安全日志[L]', underline=5, command=self.Safe_log_Cmd) self.MainMenu.add_command(label='帮助[H]', underline=3, command=self.My_help_Cmd) class Application(Application_ui): def __init__(self, master=None): Application_ui.__init__(self, master) def My_project_Cmd(self, event=None): pass def Other_project_Cmd(self, event=None): #TODO, Please finish the function here! pass def Return_mainform_Cmd(self, event=None): #TODO, Please finish the function here! pass def Exit_program_Cmd(self, event=None): #TODO, Please finish the function here! pass def Show_picture_Cmd(self, event=None): #TODO, Please finish the function here! pass def My_assess_Cmd(self, event=None): #TODO, Please finish the function here! pass def Warn_wharf_Cmd(self, event=None): #TODO, Please finish the function here! pass def Warn_slope_Cmd(self, event=None): #TODO, Please finish the function here! pass def Safe_log_Cmd(self, event=None): #TODO, Please finish the function here! pass def My_help_Cmd(self, event=None): #TODO, Please finish the function here! pass app=Application() app.mainloop()
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
使用 Docker 部署 Spring Boot 项目
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
Android 9.0 init 启动流程
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、启动流程概述一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。2.加载BootLoader,拉起Android OS。3.加载Uboot,初始外设,引导Kernel启动等。...
相关热词 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件 c#注册dll文件 c#安装.net
立即提问