2017-11-01 1 views
0

목록에서 요소를 가져 오는 데 문제가 있습니다. 나는 키보드의 아래로 페이지 버튼을 누르고있을 때, 그것은 7 개 요소를 건너 뜁니다로는 PageDown 키 함수를 호출하고 그것이이 목록에서 7 개 다음 요소를 가져옵니다 :목록에서 요소 건너 뛰기 및 가져 오기

['108 Sky Atlantic', '401 Sky Sports 1 UK', '402 SKY Sports 2 UK', '403 Sky Sports 3 UK', '404 Sky Sports 4 UK', '405 Sky Sports 5 UK', '406 Sky Sports News HQ']

키보드의 아래쪽 화살표 버튼을 누르면 7 개의 요소를 건너 뛸 수 있지만 406 Sky Sports News HQ 뒤에 오는 7 개의 요소를 가져 오지 않으므로 413 Eurosport 1 UK 뒤에 올 요소를 가져 오므로 channels_list이 표시됩니다 이렇게 잘못되었습니다 :

['414 Eurosport 2 UK', '415 BT Sport 1', '416 BT Sport 2', 
'417 At the Races', '418 BT Sport ESPN', '419 MUTV', '420 Chelsea TV'] 

그것은해야한다 : 여기

['407 Sky Sports F1', '408 Sky Sports 1 HD', '409 Sky Sports 2 HD', '410 Sky Sports 3 HD', '411 Sky Sports 4 HD', '412 Sky Sports 5 HD', '413 Eurosport 1 UK'] 

코드입니다 : 내가 달성을 기대하고하는 것은 내가 7 개 요소를 생략하고 I가 명중 할 때마다의 7 개 요소를 가져 할 것입니다

def PageDown(self): 
    self.channel = [ 
     '101 BBC One S East', '102 BBC Two', '103 ITV', '104 Channel 4', 
     '105 Channel 5', '106 Sky One', '107 Sky Living', '108 Sky Atlantic', 
     '401 Sky Sports 1 UK', '402 SKY Sports 2 UK', '403 Sky Sports 3 UK', 
     '404 Sky Sports 4 UK', '405 Sky Sports 5 UK', '406 Sky Sports News HQ', 
     '407 Sky Sports F1', '408 Sky Sports 1 HD', '409 Sky Sports 2 HD', 
     '410 Sky Sports 3 HD', '411 Sky Sports 4 HD', '412 Sky Sports 5 HD', 
     '413 Eurosport 1 UK', '414 Eurosport 2 UK', '415 BT Sport 1', 
     '416 BT Sport 2', '417 At the Races', '418 BT Sport ESPN', '419 MUTV', 
     '420 Chelsea TV', '421 Eir Sport 1', '422 Eir Sport 2'] 

    channels_list = list() 
    channels_Index += 7 

    for i, start_ch in enumerate(self.channel): 
     if start_ch == channel: 
      channels_list = 
       self.channel[i+self.channels_Index:i+self.channels_Index+7] 

키보드의 페이지 내림 버튼. ' ['108 스카이 대서양 '401 : I 페이지 아래로 버튼을 누르

, 나는 7 개 요소를 생략하고 다음과 같이 보여 7 개 다음 요소를 가져 오려는 : 여기

는, 예를 들면 하늘 스포츠 1 UK ','402 SKY Sports 2 UK ','403 Sky Sports 3 UK ','404 Sky Sports 4 UK ','405 Sky Sports 5 UK ','406 Sky Sports News 본사 ']

따라서 페이지 아래로 버튼을 누르면 다음 7 요소를 얻고 자합니다.

['407 Sky Sports F1', '408 Sky Sports 1 HD', '409 Sky Sports 2 HD', '410 Sky Sports 3 HD', '411 Sky Sports 4 HD', '412 Sky Sports 5 HD', '413 Eurosport 1 UK'] 

안녕하세요

['414 Eurosport 2 UK', '415 BT Sport 1', '416 BT Sport 2', '417 At the Races', '418 BT Sport ESPN', '419 MUTV', '420 Chelsea TV'] 

그리고 마지막으로 내가 다시 페이지 다운 버튼을 쳤을 때, 나는의 끝에 가까이 오는 7 개 요소를 가져 오려는 : 페이지 다운 버튼을 t 다시, 나는 7 개 다음 요소를 가져 오려는

['416 BT Sport 2', '417 At the Races', '418 BT Sport ESPN', '419 MUTV', '420 Chelsea TV', '421 Eir Sport 1', '422 Eir Sport 2'] 

당신이 나에게 내가 7 개 요소를 생략하고 I 페이지 다운 버튼에 명중 할 때마다의 목록에서 7 개 개의 요소를 가져올 수있는 방법을 예를 보여 주시겠습니까 : 목록은 다음과 같이 표시 할 수 있도록 키보드의?

+0

끝 7 개의 채널을 위해 당신은 그들이 이전의 7과 겹쳐 있어도 7 개의 채널을 표시하고 싶습니까? 이 경우에 대답을 바꿀 것입니다 – citizen2077

답변

1

이 한 번에 7 개 채널을 통해 스크롤 보여, 키 부분은 바로 프로그램이 시작 후 바로 아래, self.PageDown() 전화, 최초의 7 개 채널을 보여, next_seven_channels = self.all_channels[self.channel_index:end_index]

try: 
    import Tkinter as tk 
except: 
    import tkinter as tk 

class app(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.all_channels = [ 
     '101 BBC One S East', '102 BBC Two', '103 ITV', '104 Channel 4', 
     '105 Channel 5', '106 Sky One', '107 Sky Living', '108 Sky Atlantic', 
     '401 Sky Sports 1 UK', '402 SKY Sports 2 UK', '403 Sky Sports 3 UK', 
     '404 Sky Sports 4 UK', '405 Sky Sports 5 UK', '406 Sky Sports News HQ', 
     '407 Sky Sports F1', '408 Sky Sports 1 HD', '409 Sky Sports 2 HD', 
     '410 Sky Sports 3 HD', '411 Sky Sports 4 HD', '412 Sky Sports 5 HD', 
     '413 Eurosport 1 UK', '414 Eurosport 2 UK', '415 BT Sport 1', 
     '416 BT Sport 2', '417 At the Races', '418 BT Sport ESPN', '419 MUTV', 
     '420 Chelsea TV', '421 Eir Sport 1', '422 Eir Sport 2'] 
     self.channel_index = 0 

     self.print_channels = tk.Button(self,text="Page Down", 
             font=("Calibri",30,"bold"), 
             foreground="DodgerBlue2", 
             command=self.PageDown) 
     self.print_channels.pack() 

    def PageDown(self,event=None): 
     end_index = self.channel_index + 7 
     if end_index > len(self.all_channels): 
      end_index -= len(self.all_channels) - end_index 
     next_seven_channels = self.all_channels[self.channel_index:end_index] 
     self.channel_index += 7 
     if self.channel_index > len(self.all_channels): 
      self.channel_index = 0 
     print (next_seven_channels) 

root = app() 
root.mainloop() 

인 :

try: 
    import Tkinter as tk 
except: 
    import tkinter as tk 

class app(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.all_channels = [ 
     '101 BBC One S East', '102 BBC Two', '103 ITV', '104 Channel 4', 
     '105 Channel 5', '106 Sky One', '107 Sky Living', '108 Sky Atlantic', 
     '401 Sky Sports 1 UK', '402 SKY Sports 2 UK', '403 Sky Sports 3 UK', 
     '404 Sky Sports 4 UK', '405 Sky Sports 5 UK', '406 Sky Sports News HQ', 
     '407 Sky Sports F1', '408 Sky Sports 1 HD', '409 Sky Sports 2 HD', 
     '410 Sky Sports 3 HD', '411 Sky Sports 4 HD', '412 Sky Sports 5 HD', 
     '413 Eurosport 1 UK', '414 Eurosport 2 UK', '415 BT Sport 1', 
     '416 BT Sport 2', '417 At the Races', '418 BT Sport ESPN', '419 MUTV', 
     '420 Chelsea TV', '421 Eir Sport 1', '422 Eir Sport 2'] 
     self.channel_index = 0 

     self.print_channels = tk.Button(self,text="Page Down", 
             font=("Calibri",30,"bold"), 
             foreground="DodgerBlue2", 
             command=self.PageDown) 
     self.print_channels.pack() 
     self.PageDown() # added code <---- 

    def PageDown(self,event=None): 
     end_index = self.channel_index + 7 
     if end_index > len(self.all_channels): 
      end_index -= len(self.all_channels) - end_index 
     next_seven_channels = self.all_channels[self.channel_index:end_index] 
     self.channel_index += 7 
     if self.channel_index > len(self.all_channels): 
      self.channel_index = 0 
     print (next_seven_channels) 

root = app() 
root.mainloop() 

또는 프로그램이 시작될 때 처음 7 개 채널들을 보여주는 이동한다 :

try: 
    import Tkinter as tk 
except: 
    import tkinter as tk 

class app(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.all_channels = [ 
     '101 BBC One S East', '102 BBC Two', '103 ITV', '104 Channel 4', 
     '105 Channel 5', '106 Sky One', '107 Sky Living', '108 Sky Atlantic', 
     '401 Sky Sports 1 UK', '402 SKY Sports 2 UK', '403 Sky Sports 3 UK', 
     '404 Sky Sports 4 UK', '405 Sky Sports 5 UK', '406 Sky Sports News HQ', 
     '407 Sky Sports F1', '408 Sky Sports 1 HD', '409 Sky Sports 2 HD', 
     '410 Sky Sports 3 HD', '411 Sky Sports 4 HD', '412 Sky Sports 5 HD', 
     '413 Eurosport 1 UK', '414 Eurosport 2 UK', '415 BT Sport 1', 
     '416 BT Sport 2', '417 At the Races', '418 BT Sport ESPN', '419 MUTV', 
     '420 Chelsea TV', '421 Eir Sport 1', '422 Eir Sport 2'] 
     self.channel_index = 7 # changed code <---- 

     self.print_channels = tk.Button(self,text="Page Down", 
             font=("Calibri",30,"bold"), 
             foreground="DodgerBlue2", 
             command=self.PageDown) 
     self.print_channels.pack() 

    def PageDown(self,event=None): 
     end_index = self.channel_index + 7 
     if end_index > len(self.all_channels): 
      end_index -= len(self.all_channels) - end_index 
     next_seven_channels = self.all_channels[self.channel_index:end_index] 
     self.channel_index += 7 
     if self.channel_index > len(self.all_channels): 
      self.channel_index = 0 
     print (next_seven_channels) 

root = app() 
root.mainloop() 
+0

고맙습니다. 문제가 있습니다. 처음에는 self.channels_index의 값이 '0'으로 표시되어 '107 Sky Living'이후에 요소를 가져올 수있는 값을 어떻게 추가 할 수 있는지 알려주므로 7 요소를 가져올 수 있습니다. '108 Sky Sports 1 UK', '402 SKY Sports 2 UK', '403 Sky Sports 3 UK', '404 Sky Sports 4 UK', '405 Sky Sports 5 UK', 406 Sky Sports 뉴스 본사? –

+0

버튼을 처음 눌렀을 때 101-106을 표시하지 않으시겠습니까? 프로그램 시작시 표시하고 싶습니까? – citizen2077

+0

네, 맞습니다. –

1
그것은 지금 작동합니다 라인

channels_Index += 7 

이동

. 루프가 끝나면 다시 호출 할 수 있습니다.만약 내가 제대로 이해하고

+0

'channels_index + 7' 행을 삭제했습니다 :'['101 BBC One S East ','102 BBC Two ','103 ITV ',' 104 채널 4 ','105 채널 5 ','106 스카이 원 ','107 스카이 리빙 ']. 목록에서 요소를 가져올 수 있도록'self.channels_index'를 사용해야합니다. 어떤 생각? –

+0

루프 뒤에 넣습니다. – theBrainyGeek

1

코드에 게시하지 않은 전역 변수 인 channels_Index의 값을 변경합니다. 그렇지 않으면 Python은 NameError를 던질 것입니다.), 값은 self.channels_Index입니다. 당신은 아마 의미했다 self.channels_Index += 7

관련 문제