2017-05-20 2 views
1

한 번 질문을 게시하여 매우 모호했습니다. 그래서 일부 연구 및 자습서를 마친 후에 더 자세히 설명하기로했습니다. StackOverflow에서 예제를 살펴 보았습니다. 그리고 저는 그것들을 조합하여 제가 유리한 결과를 얻을 수 있는지 알아 보았습니다. (저작권 :! 코드는 내되지 않습니다) :Tkinter -Python3 : 목록의 리터럴 값을 목록의 정수 값으로 바꿉니다. UPDATE

나는 사람이 또한 프로그램에 사용되는 규칙의 이름 숫자를 입력 할 수 있도록 여기에

레이아웃입니다.

저는 8 열의 보드처럼 보이는 1 행의 직사각형을 가지고 있습니다. 클릭하면 각 사각형이 다른 색상으로 바뀝니다. 사람이 규칙을 선택하고 일부 직사각형을 클릭하면 "OK"버튼이 있어야하며 코드에 보내야합니다. 나는 색깔의 변화가 목록에 들어가는 값과 같음을 원합니다. 즉, '확인'버튼을 클릭하면 목록에 8 개의 값이 코드에 입력됩니다. 잠시 동안 게시판 아래 게시판에 게시되도록 입력 된 목록을보고 싶습니다.

이 값을 목록에 추가하는 방법이 없으므로 목록에 쉽게 입력 할 수 있도록 값의 이름을 지정하려고 할 때 차단되지만 작동하지 않습니다. 미리 조언 해 주셔서 감사 드리며 여전히 모호한 부분이 있다면 알려 주시기 바랍니다.

I : 여기

from Tkinter import * 

    [couleur_resulat = \[\] 
    'black'==1 
    'white'==0 

    class One_Rectangle(): 
     def __init__(self, can, depart_x, depart_y, size): 
      self.can=can 
      self.id= self.can.create_rectangle((depart_x, depart_y, depart_x+size,depart_y+size), fill='white') 
      self.can.tag_bind(self.id, '<ButtonPress-1>', self.set_couleur) 

      self.couleur_change=True 

     def set_couleur(self, event=None): 
      self.couleur_change = not self.couleur_change 
      couleur='white' 
      if not self.couleur_change: 
       couleur='black' 

      self.can.itemconfigure(self.id, fill=couleur) 


    fenetre =Tk() 

    canvas= Canvas(fenetre,width=500, height=500, background='white') 

    canvas.pack(side=BOTTOM, padx=5, pady=5) 

    OR0=One_Rectangle (canvas,110,20, 20) 
    OR1=One_Rectangle (canvas,130,20, 20) 
    OR2=One_Rectangle (canvas,150,20, 20) 
    OR3=One_Rectangle (canvas,170,20, 20) 
    OR4=One_Rectangle (canvas,190,20, 20) 
    OR5=One_Rectangle (canvas,210,20, 20) 
    OR6=One_Rectangle (canvas,230,20, 20) 
    OR7=One_Rectangle (canvas,250,20, 20) 
    OR8=One_Rectangle (canvas,270,20, 20) 

    B1=Button(fenetre, text='Quitter', command=fenetre.quit).pack(side=RIGHT, padx=5, pady=5) 
    B2=Button(fenetre, text='Relancer').pack(side=LEFT, padx=5, pady=5) #Mettre une commande pour relancer le programme lorsque c'est termine 
    B3=Button(fenetre, text='OK').pack(side=RIGHT,padx=5, pady=5) #On doit mettre une commande qui recoit et envoie le numero au code GET? 

    text1= Label(fenetre, text= 'Regles (1-255):')  
    entr1= Entry(fenetre) 
    text1.pack(side= LEFT) 
    entr1.pack(side=RIGHT) 


    fenetre.mainloop()][1] 

내가


UPDATE를받을 것입니다 : ^^ '여기

내가 예로부터 지금까지 조립 된 코드는 제안 된 코드를 삽입하고 일부 수정했습니다. 예를 들면 : [ 'white'] [ 'black'] [ 'white'] 등등 가지고 있기 위해서는 어떻게해야합니까? 검정 = 0 및 흰색 = 1에 대해 동시에 한 목록에 모두 입력 할 수 있습니까? 나는이 [001001010]

from Tkinter import * 

couleur_resultat = list(['white' for i in range(9)]) 


class One_Rectangle(): 
    def __init__(self, can, depart_x, depart_y, size,data, index): 
     self.can=can 
     self.id= self.can.create_rectangle((depart_x, depart_y, depart_x+size,depart_y+size), fill='white') 
     self.can.tag_bind(self.id, '<ButtonPress-1>', self.set_couleur) 

     self._data= data     
     self._index = index = index  

     self.couleur_change=True 

    def set_couleur(self, event=None): 
     self.couleur_change = not self.couleur_change 
     couleur='white' 

     if not self.couleur_change: 
      couleur='black' 

     self._data[self._index] = couleur 

     self.can.itemconfigure(self.id, fill=couleur) 



fenetre =Tk() 

canvas= Canvas(fenetre,width=500, height=500, background='white') 

canvas.pack(side=BOTTOM, padx=5, pady=5) 


OR0=One_Rectangle (canvas,110,20, 20, couleur_resultat, 0) 
OR1=One_Rectangle (canvas,130,20, 20, couleur_resultat, 1) 
OR2=One_Rectangle (canvas,150,20, 20, couleur_resultat, 2) 
OR3=One_Rectangle (canvas,170,20, 20, couleur_resultat, 3) 
OR4=One_Rectangle (canvas,190,20, 20, couleur_resultat, 4) 
OR5=One_Rectangle (canvas,210,20, 20, couleur_resultat, 5) 
OR6=One_Rectangle (canvas,230,20, 20, couleur_resultat, 6) 
OR7=One_Rectangle (canvas,250,20, 20, couleur_resultat, 7) 
OR8=One_Rectangle (canvas,270,20, 20, couleur_resultat, 8) 



B1=Button(fenetre, text='Quitter', command=fenetre.quit).pack(side=RIGHT, padx=5, pady=5) 

B3=Button(fenetre, text='OK', command= lambda: on_OK_pressed()).pack(side=RIGHT,padx=5, pady=5) 


def on_OK_pressed(): 
    for couleur in couleur_resultat: 
     'black'==1 
     'white'==0 

     print [couleur] 


fenetre.mainloop() 

답변

0

나는 당신의 질문을 이해 해요 경우 저장하는 방법을 찾고를 받고 싶습니다 색상 값을 아래에 표시하기 전에 ('확인'클릭시).

from Tkinter import * 

# Create a default for each item (what they start with) 
couleur_resulat = ['white' for i in range(8)] 
'black'==1 
'white'==0 

class One_Rectangle(): 
    def __init__(self, can, depart_x, depart_y, size, data, index): 
     self.can=can 
     self.id= self.can.create_rectangle((depart_x, depart_y, depart_x+size,depart_y+size), fill='white') 
     self.can.tag_bind(self.id, '<ButtonPress-1>', self.set_couleur) 

     # The same object for all items 
     self._data = data 
     self._index = index # The index it should be placed 

     self.couleur_change=True 

    def set_couleur(self, event=None): 
     self.couleur_change = not self.couleur_change 
     couleur='white' 
     if not self.couleur_change: 
      couleur='black' 

     # This will fill the same list across all objects 
     self._data[self._index] = couleur 

     self.can.itemconfigure(self.id, fill=couleur) 


fenetre =Tk() 

canvas= Canvas(fenetre,width=500, height=500, background='white') 

canvas.pack(side=BOTTOM, padx=5, pady=5) 


OR0=One_Rectangle (canvas,110,20, 20, couleur_resulat, 0) 
OR1=One_Rectangle (canvas,130,20, 20, couleur_resulat, 1) 
# ... For reach rectangle       ^Make sure to increment 


def on_OK_pressed(*args, **kwargs): 
    for couleur in couleur_resulat: 
     print(couleur) # Do whatever you would like with the data 

이렇게하면 파이썬이 목록 관리를 처리하게됩니다. 각 항목에 대해 적절한 색인을 얻기 위해 기본 정보가 있는지 확인해야합니다.

관련 문제