我编写了这段代码,在此函数gen()id用于随机生成数字进行排序。我的代码就像
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
self.button1 = Radiobutton( self, text = "Bubble Sort" )
self.button1.grid( row = 1, column = 0, sticky = W+E+N+S )
self.button2 = Radiobutton( self, text = "Quick Sort" )
self.button2.grid( row = 1, column = 1, sticky = W+E+N+S )
self.button3 = Radiobutton( self, text = "Shell Sort" )
self.button3.grid( row = 1, column = 2, sticky = W+E+N+S )
#label to store value
def gen():
for x in range(0,10):
num=random.randint(0,100)
self.label2 = Label( self,text='%s'%num, width = 2, height = 2 )
self.label2.grid( row =3 , columnspan =10 , 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( 5, weight = 1 )
self.columnconfigure( 5, weight = 1 )
def main():
Sorting().mainloop()
if __name__ == "__main__":
main()
我想用它来生成随机数,然后对它们进行排序。有任何建议。
答案 0 :(得分:3)
试试这个:
#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.nums
中。您希望在将标签显示在标签之前将排序算法调用到该列表。
我尽量保持代码尽可能多。从这一点来看,它可以进一步优化。例如,您可以替换:
self.nums = []
for x in range(0, 10):
self.nums.append(random.randint(0, 100))
带
self.nums = [random.randint(0, 100) for x in range(10)]