我创建了一个简单的程序,在屏幕上显示28个数字。目前,当你点击数字时没有任何反应。最终,我希望这些数字在点击时消失。另外,当你点击'5'时,你会得到5分。我希望在10秒后得分最多的用户赢得这场比赛。但那是为了以后。Python:初始化类中的方法
我的代码是:
from Tkinter import *
import random
class Game(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, background="white")
self.parent = parent
self.parent.title("Centered window")
self.pack(fill=BOTH, expand=1)
self.centerWindow()
def centerWindow(self):
w = 850
h = 530
sw = self.parent.winfo_screenwidth()
sh = self.parent.winfo_screenheight()
x = (sw - w)/2
y = (sh - h)/2
self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y))
def main():
global tile_frame_column # the labels that go on the screen of individual numbers
tile_frame_column = {}
global tiles_make_number # dictionary of all the individual numbers
tiles_make_number = {}
global tile_frame_column_counter
tile_frame_column_counter=0
global tiles_make_number_counter
tiles_make_number_counter=0
global xpos
xpos=35
global ypos
ypos=50
tile_numbers = ['1', '2', '3', '4', '5', '6', '1', '2', '1', '2', '1', 'l', '1', '3', '4', '2', '1', '2', '1', '1', '2', '1', '1', '6', '4', '3', '2', '2']
root = Tk()
ex = Game(root)
def add_number_to_screen():
global tile_frame_column_counter
global tiles_make_number_counter
global tile_frame_column
global xpos
global ypos
if not tile_numbers:
return
rand = random.choice(tile_numbers)
tile_frame_column[tile_frame_column_counter] = Button(root, text=rand, font="Helvetica 16 bold")
tile_frame_column[tile_frame_column_counter].place(x=xpos, y=ypos)
tile_numbers.remove(rand) # remove that tile from list of tiles
xpos += 80
if (len(tiles_make_number) % 7 == 0) & (len(tiles_make_number) > 0):
xpos = 35
ypos += 80
tile_frame_column[tile_frame_column_counter].place(x=xpos, y=ypos)
xpos += 80
tiles_make_number[tiles_make_number_counter] = rand
tile_frame_column_counter += 1
tiles_make_number_counter += 1
root.after(10, add_number_to_screen)
root.after(10, add_number_to_screen)
root.mainloop()
if __name__ == '__main__':
main()
我想要的main()函数进行初始化,虽然。每当创建游戏对象时,我都希望它自动添加主要功能 - 意味着将数字添加到屏幕上。我想现在我的代码的方式,当一个游戏对象被创建时,它只会创建屏幕。但是,必须有更好的方法来维护这些代码。还有更好的方法来编写这段代码,所以我不需要所有这些全局变量?
我想重做这样的代码,但它不工作:
from Tkinter import *
import random
class Game(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, background="white")
self.parent = parent
self.parent.title("Centered window")
self.pack(fill=BOTH, expand=1)
self.centerWindow()
**self.main()**
def centerWindow(self):
w = 850
h = 530
sw = self.parent.winfo_screenwidth()
sh = self.parent.winfo_screenheight()
x = (sw - w)/2
y = (sh - h)/2
self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y))
**def main(self):**
global tile_frame_column # the labels that go on the screen of individual numbers
tile_frame_column = {}
global tiles_make_number # dictionary of all the individual numbers
tiles_make_number = {}
global tile_frame_column_counter
tile_frame_column_counter=0
global tiles_make_number_counter
tiles_make_number_counter=0
global xpos
xpos=35
global ypos
ypos=50
tile_numbers = ['1', '2', '3', '4', '5', '6', '1', '2', '1', '2', '1', 'l', '1', '3', '4', '2', '1', '2', '1', '1', '2', '1', '1', '6', '4', '3', '2', '2']
root = Tk()
ex = Game(root)
def add_number_to_screen():
global tile_frame_column_counter
global tiles_make_number_counter
global tile_frame_column
global xpos
global ypos
if not tile_numbers:
return
rand = random.choice(tile_numbers)
tile_frame_column[tile_frame_column_counter] = Button(root, text=rand, font="Helvetica 16 bold")
tile_frame_column[tile_frame_column_counter].place(x=xpos, y=ypos)
tile_numbers.remove(rand) # remove that tile from list of tiles
xpos += 80
if (len(tiles_make_number) % 7 == 0) & (len(tiles_make_number) > 0):
xpos = 35
ypos += 80
tile_frame_column[tile_frame_column_counter].place(x=xpos, y=ypos)
xpos += 80
tiles_make_number[tiles_make_number_counter] = rand
tile_frame_column_counter += 1
tiles_make_number_counter += 1
root.after(10, add_number_to_screen)
root.after(10, add_number_to_screen)
root.mainloop()
我所改变的是我加self.main()来构造,把主(个体经营)类游戏和去除。?在“如果名 =‘主要’部分但是,当我运行的程序没有任何反应任何人有意见
感谢
是你的问题〜如何组织代码?简而言之, – 2014-10-02 04:43:58
,那是我的问题。但比这还多一点。 – user2456977 2014-10-02 12:25:32
有人能帮忙吗? – user2456977 2014-10-02 13:32:44