Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python for循环不';当它在按钮的命令范围内时,不能正常工作_Python 2.7_Button_For Loop_Tkinter - Fatal编程技术网

Python 2.7 Python for循环不';当它在按钮的命令范围内时,不能正常工作

Python 2.7 Python for循环不';当它在按钮的命令范围内时,不能正常工作,python-2.7,button,for-loop,tkinter,Python 2.7,Button,For Loop,Tkinter,单击“加载”时,它将读取文件并显示该文件 from Tkinter import * import tkFileDialog import sys def openwindows(): eText.set(open.show()) def loadfiles(): filedirectory=eText.get() f=file(filedirectory) lines = f.readlines() length=len(lines) #ver

单击“加载”时,它将读取文件并显示该文件

from Tkinter import *
import tkFileDialog
import sys

def openwindows():
    eText.set(open.show())
def loadfiles():
    filedirectory=eText.get()
    f=file(filedirectory)
    lines = f.readlines()
    length=len(lines)
    #vertex=[]
    #face=[]
    for x in range(0,length):
        print (x)




Root=Tk()
RTitle=Root.title("Assignment_2")
RWidth=Root.winfo_screenwidth()
RHeight=Root.winfo_screenheight()
Root.geometry("%dx%d+%d+%d" % (RWidth/3,RHeight/3*2,RWidth/2-RWidth/6, RHeight/2-RHeight/3))

frame1 = Frame(Root)
frame1.pack()

Label(frame1, text="Filename: ").pack(side = LEFT)

eText = StringVar()
statusbar = Entry(frame1, state="readonly", textvariable=eText)
eText.set("pyramid.txt")
statusbar.pack(side = LEFT)

myfiletypes = [('text files', '*.txt'), ('All files', '*')]
open = tkFileDialog.Open(frame1, filetypes = myfiletypes)
Button(frame1, text="Browse", fg = "Blue", command=openwindows).pack(side = LEFT)
Button(frame1, text = "Load", fg = "red", command=loadfiles).pack(side=LEFT)

frame2 = Frame(Root)
frame2.pack()

Label(frame2, text="Rotation Axis: ").pack(side=LEFT)
r1 = IntVar()
r1.set(3)
Radiobutton(frame2, text="X", variable=r1, value=1).pack(side=LEFT)
Radiobutton(frame2, text="Y", variable=r1, value=2).pack(side=LEFT)
Radiobutton(frame2, text="Z", variable=r1, value=3).pack(side=LEFT)
Radiobutton(frame2, text="Line AB", variable=r1, value=4).pack(side=LEFT)

Label(frame2, text="A:").pack(side=LEFT)
pointA = Entry(frame2, width=10)
pointA.insert(0, "[0.0,0.0,0.0]")
pointA.pack(side=LEFT)

Label(frame2, text="B:").pack(side=LEFT)
pointB = Entry(frame2, width=10)
pointB.insert(0, "[1.0,1.0,1.0]")
pointB.pack(side=LEFT)

var1 = StringVar(Root)
var1.set("90")
Label(frame2, text="Degree:").pack(side=LEFT)
Spinbox(frame2, width=3, from_=0, to=350, increment=10, textvariable=var1).pack(side=LEFT)

var2 = StringVar(Root)
var2.set("5")
Label(frame2, text="Steps:").pack(side=LEFT)
Spinbox(frame2, width=3, from_= 1, to = 10, textvariable=var2).pack(side=LEFT)

Button(frame2, text = "Rotate", fg = "Blue").pack(side=LEFT)

frame3 = Frame(Root)
frame3.pack()

Label(frame3, text="Scale Ratio: ").pack(side=LEFT)
r2 = IntVar()
r2.set(1)
Radiobutton(frame3, text="All", variable=r2, value=1).pack(side=LEFT)
var3 = StringVar(Root)
var3.set("1")
Spinbox(frame3, width=4, from_= 0.25, to = 4, textvariable=var3, increment=0.25, format='%3.2f').pack(side=LEFT)
Radiobutton(frame3, text="[Sx,Sy,Sz]", variable=r2, value=2).pack(side=LEFT)
scaleamount = Entry(frame3, width=10)
scaleamount.insert(0, "[1,1,1]")
scaleamount.pack(side=LEFT)
var4 = StringVar(Root)
var4.set("4")
Label(frame3, text="Steps:").pack(side=LEFT)
Spinbox(frame3, width=3, from_= 1, to = 10, textvariable=var4).pack(side=LEFT)

Button(frame3, text = "Scale", fg = "Blue").pack(side=LEFT)

separator = Frame(height=2, bd=1, relief=SUNKEN)
separator.pack(fill=X, padx=5, pady=5)

Canvas(Root, bg="Blue").pack(fill="both", expand=True)




mainloop()
无论您在txt文件中有多少行。 但问题是,它只显示这个

0
1
2
3
4
5
6
7
.....
这意味着for循环只运行了一次,就是这样。 如果我关闭程序,其余的数字将显示在命令提示符中。 真奇怪。。。没有道理。
loadfiles()
本身工作正常。
它只是无法使用按钮

问题与用户界面的处理方式有关

尝试将打印(x)替换为

0

如果您搜索tkinter和flush,您将发现大量对话可供阅读。

如果您只是运行该功能,会发生什么?打印
以查看它是否能够读取文件。@sashkello我试过了。显示
打印行的结果
@sashkello['v0.0\n','v0.80\n','v8.80\n','v0.40.4.7\n','f4.1\n','f3.4\n','f2.5\n','f5.4\n','f3.4\n','w-1.0-1.01\t1\n','s0.9']@sashkello类似的函数只运行1个print语句,如果我在
for循环
前面添加
打印行
,则只会打印
,如果我发现问题,只要将其作为可执行文件打开,我的所有代码都可以正常工作。如果我尝试在WingIDE中运行它,它的行为是这样的。在我运行代码的OSX框中,我看到了您描述的行为。当我做出上面建议的更改时,我看到了“0\n\1\n2\n0”。
用于范围(0,长度)中的x:sys.stdout.write(str(x)+'\n')#或“{}\n”.format(x)sys.stdout.flush()
实际上,您应该读取数据并将其放入一个小部件中,而不是在stdout上大惊小怪。更大的问题是,在文件I/O和文本输出都完成之前,您将阻塞UI。你真的应该有一个空闲的处理器或线程。
sys.stdout.write(str(x) + '\n')  # or "{}\n".format(x)
sys.stdout.flush()