在tkinter中以图形方式排列

时间:2018-11-07 17:31:35

标签: python arrays python-3.x tkinter

我正在使用Python在GUI中进行名为线性和二进制搜索的项目,并且编写了一个函数来获取用户通过线性搜索算法给出的数组的索引号,但是该函数不能正常工作,建议进行改进。

我还想以图形方式添加此Algorthim的过程。 这是项目

  

模拟器,以图形方式显示线性和二进制搜索。该模拟器会要求您选择数组的大小,然后以图形方式确定框的数量,然后可以将数据插入到这些框中。它仅允许您首先将数据插入第一个索引,然后使第二个框将数据插入等等。然后询问用户要搜索哪些数据,并以图形方式显示搜索过程并最终显示结果。

import tkinter as tk

root=tk.Tk()
root.title("Linear Search")
root.geometry("1200x600")

def Linear():
    x=root.snum.get()
    for i in range(len(box_list)):
        if box_list[i]==x:
            return i
    return -1
    result=tk.Label(root,text=i)
    result.pack()

def ApplytoLabel():
    xx=size.get()
    for i in range(xx):
        element = box_list[i].get() 
        ArrayLabel=tk.Label(root,text="Array Element: " + element,font="Arial 12 bold",bg="red",fg="white",bd="5")
        ArrayLabel.pack(side="left")

        #Search Element
    text2=tk.Label(root,text="Number to search:",
                   font="Arial 10 bold",fg="blue",pady="10",anchor="w")
    text2.pack(side="left")

    snum=tk.IntVar()

    SearchNum=tk.Entry(root,textvariable=snum)
    SearchNum.pack(side="left")

    LinearSearch=tk.Button(root,text="Linear Search",command=Linear)
    LinearSearch.pack(side="left")

box_list = []   

def Boxes():
    xx=size.get()
    for i in range(xx):        
        box=tk.Entry(root,font="Arial 10 bold",bd="5",width="5")
        box.pack(side="left")
        box_list.append(box)    
    ApplytoLabel1=tk.Button(root,text="Submit To Array",command=ApplytoLabel)
    ApplytoLabel1.pack(side="left")



Array = tk.Frame(root)
Array.pack()

text1=tk.Label(Array,text="Enter the Size of Array:",
               font="Arial 10 bold",fg="blue")
text1.pack()

size=tk.IntVar()

ArraySize=tk.Entry(Array,textvariable=size)
ArraySize.pack()

SizeofArray=tk.Button(Array,text="Submit",command=Boxes)
SizeofArray.pack()



root.mainloop()

1 个答案:

答案 0 :(得分:0)

首先,我要说的是您对Array的使用非常混乱。 const node2 = {data: 2, next: []}; const node1 = {data: 1, next: [node2]}; const head1 = Immutable.fromJS(node1); const head2 = head1.get('next').get(0).set('data', 9); console.log(head2.get('data')); // 9 console.log(head2.get('next').get(0)); // undefined // expected output: 1 and {.... object ...}!==undefined是一种内置方法,因此您需要对自己的工作使用其他一些术语。我对您的代码进行了一些整理,并做了一些必要的更改以使功能发挥作用,我认为您正在寻找。也就是说,请花一些时间阅读PEP8样式指南。这将使其他人更轻松地阅读您的代码。

您的代码没有按照您的期望去做的关键因素之一是您缺少<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/4.0.0-rc.12/immutable.js"></script>Array的{​​{1}}语句。要使一切都能做您想要的,将需要这两个。

接下来,在global函数中不需要snum,因为您可以通过按钮调用此函数,因此无法使用返回的任何内容。

在代码中有很多地方,当实际上不需要将变量分配给变量名称时,都可以将其分配给变量名称。我也把它们清理了。

如果您有任何疑问,请告诉我:

box_list

enter image description here