私は、動物の間で選択するタプルに影響を与えるためにスケールウィジェットデータ(水生または地上)を使用するpython 2.7 tkinterモジュールを作成しました。モジュールは、3つの動物(シカ、ウナギ、カメ)を「Submit」をクリックして関連付けられたコマンドをアクティブにして降順でソートして表示します。そして鹿(ディア:0.00)を除去すべきである0.01に地上スケールスライディング:ウナギ(0.00うなぎ)を除去すべきである0.01に水生規模摺動理論的にpython加法確率
from Tkinter import (N, S, E, W, BOTH, BOTTOM, END, FLAT, HORIZONTAL, LEFT, NO, RAISED, RIGHT, TOP, YES, Button, Entry, Frame, Grid, Label, Pack, Scale, Text, Tk)
from operator import mul
root = Tk()
root.title('Example')
class Environment:
def __init__(self, parent):
# layout
self.myParent = parent
self.main_frame = Frame(parent, background="light blue")
self.main_frame.pack(expand=YES, fill=BOTH)
self.main_left_frame = Frame(self.main_frame, background="light blue")
self.main_left_frame.pack(side=LEFT, expand=YES, fill=BOTH)
self.main_right_frame = Frame(self.main_frame, background="light blue")
self.main_right_frame.pack(side=RIGHT, expand=YES, fill=BOTH)
self.water = Scale(self.main_right_frame, from_=0.01, to=1.00, orient=HORIZONTAL, bd=0, label="Aquatic",
background="white", troughcolor="cyan", length=50, width=10, sliderlength=10, resolution=0.01)
self.water.pack()
self.water.set(1.00)
self.soil = Scale(self.main_right_frame, from_=0.01, to=1.00, orient=HORIZONTAL, bd=0, label="Terrestrial",
background="white", troughcolor="saddle brown", length=50, width=10, sliderlength=10, resolution=0.01)
self.soil.pack()
self.soil.set(1.00)
self.id_frame = Frame(self.main_left_frame, background="white")
self.id_frame.pack(side=BOTTOM)
# submit button
self.submitbutton = Button(self.main_left_frame,text="Submit", background="black", foreground="white",
width=6, padx="2m", pady="1m")
self.submitbutton.pack(side=TOP)
self.submitbutton.bind("<Button-1>", self.submitbuttonclick)
self.submitbutton.bind("<Return>", self.submitbuttonclick)
#Animal Matrix
self.animal = [
('Odocoileous virginiana','White-tailed Deer',self.soil.get,0.99,0.01,0.99),
('Anguilla anguilla','American Eel',self.water.get,0.99,0.01,0.99),
('Trachemys scripta','Red-eared Slider',lambda:self.soil.get()*self.water.get(),0.99,0.01,0.99)]
def submitbuttonclick(self, event):
self.id_frame.destroy()
self.id_frame = Frame(self.main_left_frame, background="white")
self.id_frame.pack(side=BOTTOM)
A=self.animal
#equation
sigma = float(sum(reduce(mul,item[3:]) for item in A))
B = [(item[0], "%.2f" % (item[2]()*reduce(mul, item[3:])/sigma)) for item in A]
C = sorted(B, key=lambda item: item[1], reverse=True)
Label(self.id_frame, text = C[0], background = "white").pack(side=TOP, anchor = W)
Label(self.id_frame, text = C[1], background = "white").pack(side=TOP, anchor = W)
Label(self.id_frame, text = C[2], background = "white").pack(side=TOP, anchor = W)
environment = Environment(root)
root.mainloop()
、。これは正常に動作します。
しかし、水生動物と陸生動物の両方を扱う場合、コードは分解されます。水生または陸生のいずれかのスケールが0.01を超える限り、カメはゼロになるべきではありません。追加的な確率は働かない。両方が考慮されるように
lambda:self.soil.get()*self.water.get()
は、どのように私はこれを表現しますが、どちらも相殺することができますか?
このコードを質問の必須事項にしてください。 – Marcin
これは蒸留されています。これはほんの少しの例です - root.titleに気づいてください - これを尋ねるために特別に作成しました。 100行は本当にスクロールするほどです - その大部分はスケールウィジェットに関する質問のウィジェット記述ですか?ラムダ:self.soil.get()* self.water.get()は、適切なコンテキストなしで非常に役立っていますか? – Jeff