2012-02-07 17 views
0
でpythonで

を異なるソートを選択するため、私はラジオボタンのために、このコードを使用しています:GUIはTkinterの

v= IntVar() 

    self.button1 = Radiobutton(self, text = "Bubble Sort" ,variable=v,value=1) 
    self.button1.grid(row = 1, column = 0, sticky = W+E+N+S) 


    self.button2 = Radiobutton(self, text = "Quick Sort",variable=v,value=2) 
    self.button2.grid(row = 1, column = 1, sticky = W+E+N+S) 


    self.button3 = Radiobutton(self, text = "Shell Sort", variable=v,value=3) 
    self.button3.grid(row = 1, column = 2, sticky = W+E+N+S) 

を複数の基準の完全なコードは、上記で、スクリーンショットは、このようなものです:

enter image description here

ソートを選択した後でボタンをクリックすると、これらの数値のソートはどうすればできますか?最初に3つのソートからソートを選択してから、ボタンのソートをクリックして番号をソートする必要がありますか?ここで

は休みです:

from Tkinter import * 
import random 
class Sorting(Frame): 
    def __init__(self): 
    Frame.__init__(self) 
    self.master.title("Sorting") 

    self.master.rowconfigure(5, weight = 1) 
    self.master.columnconfigure(5, weight = 1) 
    self.grid(sticky = W+E+N+S) 
    #label for sort intro 

    self.label1 = Label(self, text = "Select Sort", width = 25 ,height=2) 
    self.label1.grid(row = 0, column = 1, sticky = N) 



    #Radio buttons for sorts 
    v= IntVar() 

    self.button1 = Radiobutton(self, text = "Bubble Sort" ,variable=v,value=1) 
    self.button1.grid(row = 1, column = 0, sticky = W+E+N+S) 


    self.button2 = Radiobutton(self, text = "Quick Sort",variable=v,value=2) 
    self.button2.grid(row = 1, column = 1, sticky = W+E+N+S) 


    self.button3 = Radiobutton(self, text = "Shell Sort", variable=v,value=3) 
    self.button3.grid(row = 1, column = 2, sticky = W+E+N+S) 

#function to do soting 
    #def sort(): 

#label to store value 
    def gen(): 
    self.nums = [] 
    for x in range(0, 10): 
     self.nums.append(random.randint(0, 100)) 
    # . . . . . . . . . . . <- maybe here call sorting method on self.nums 


     num = ''.join('%4i' % num for num in self.nums) 
     self.label2 = Label(self, text=num, width=2, height=2) 
     self.label2.grid(row=3, columnspan=10, sticky=W+E+N+S) 

     #self.label2.pack(fill="both") 

    #Button for sorting 
    self.button5=Button(self,text='start sorting') 
    self.button5.grid(row = 4,column=1, sticky = W+E+N+S) 

    #button to generate number 
    self.button4 = Button(self,text='Generate no.',command=gen) 
    self.button4.grid(row = 2,column=1, sticky = W+E+N+S) 
    self.rowconfigure(1, weight = 1) 
    self.columnconfigure(1, weight = 1) 
def main(): 
    Sorting().mainloop() 

if __name__ == "__main__": 
    main() 
+0

いいえ、あなたは** **生成されていなかった自分のイメージを掲載***フルコード:

def bubble(self): print('bubble to be implemented') return sorted(self.nums) def shell(self): print('shell to be implemented') return sorted(self.nums) def quick(self): print('quick to be implemented') return sorted(self.nums) 

これは完全なコードです。 「ソートの開始」ボタンが定義されている場合、buttons1〜3が投稿の最初のコードセグメントと異なる定義をしているのはなぜですか? – joaquin

+0

申し訳ありません私は誤って古いコードを投稿しました –

+0

ご迷惑をおかけして申し訳ありません。私はコード –

答えて

2

あなたのstart sortingボタンのコールバックメソッドを実装する必要があります。そこ

def sortit(self): 
     function = self.function[self.v.get()] 
     result = function() 
     num = ''.join('%4i' % num for num in result) 
     self.label3 = Label(self, text=num, width=2, height=2) 
     self.label3.grid(row=5, columnspan=10, sticky=W+E+N+S) 

あなたはself.v.get()で押されたボタンを取得します。 は、この整数値は、あなたのソートメソッド名を格納した辞書のキーとして使用されます。その後、

self.function = {0:self.bubble, 1:self.quick, 2:self.shell} 

result = function()はあなたに対応するソートメソッドを呼び出した結果を提供します。あなたはこれらのメソッドを定義するためにまだ持っている:

import random 
from tkinter import * 

class Sorting(Frame): 
    def __init__(self): 
     Frame.__init__(self) 
     self.function = {0:self.bubble, 1:self.quick, 2:self.shell} 
     self.master.title("Sorting") 
     self.master.rowconfigure(5, weight=1) 
     self.master.columnconfigure(5, weight=1) 
     self.grid(sticky=W+E+N+S) 

     #label for sort intro 
     self.label1 = Label(self, text="Select Sort", width=25, height=2) 
     self.label1.grid(row=0, column=1, sticky=N) 

     #Radio buttons for sorts 
     self.v = IntVar() 
     for indx, button in enumerate(('Bubble', 'Quick', 'Shell')): 
      name = "%s Sort" % button 
      button = Radiobutton(self, text=name, variable=self.v, value=indx) 
      button.grid(row=1, column=indx, sticky=W+E+N+S) 
     button.deselect() 

     #button to generate number 
     self.button4 = Button(self,text='Generate no.',command=self.gen) 
     self.button4.grid(row=2, column=1, sticky=W+E+N+S) 
     self.rowconfigure(5, weight=1) 
     self.columnconfigure(5, weight=1) 

    def create_but2sort(self): 
     self.button5 = Button(self, text='start sorting', command=self.sortit) 
     self.button5.grid(row=4, column=1, sticky=W+E+N+S) 
     self.rowconfigure(5, weight=1) 
     self.columnconfigure(5, weight=1) 

    def gen(self): 
     self.nums = [random.randint(0, 100) for x in range(10)] 
     num = ''.join('%4i' % num for num in self.nums) 
     self.label2 = Label(self, text=num, width=2, height=2) 
     self.label2.grid(row =3, columnspan=10, sticky = W+E+N+S) 
     self.create_but2sort() 

    def sortit(self): 
     function = self.function[self.v.get()] 
     result = function() 
     num = ''.join('%4i' % num for num in result) 
     self.label3 = Label(self, text=num, width=2, height=2) 
     self.label3.grid(row=5, columnspan=10, sticky=W+E+N+S) 

    def bubble(self): 
     print('bubble to be implemented') 
     return sorted(self.nums) 

    def shell(self): 
     print('shell to be implemented') 
     return sorted(self.nums) 

    def quick(self): 
     print('quick to be implemented') 
     return sorted(self.nums) 

def main(): 
    Sorting().mainloop() 

if __name__ == "__main__": 
    main() 
+0

を訂正しましたThanxはそれほど多くの作業gud .... –

+0

このコードは、すべての3つの並べ替えのための同じテクニックを使用しています...並べ替えのためのアルゴリズムこれら。 –

+0

'実装されるシェル'、 '実装されるバブル'、 'すぐに実装される' ... *** ***、私はうまくいく... – joaquin

関連する問題