質問編集履歴

1 コードと内容の変更

gymgym

gymgym score 94

2017/12/12 12:28  投稿

Pythonのボタンの挙動について
```Python
from tkinter import *
from tkinter import ttk
import pandas as pd
import numpy as np
def button_click():
   show_selection()
#def button_click():
#   show_selection()
def show_selection(x):
   for i in lb.curselection():
       if i == 0:
           a = x.sum()
           b = len(x) - x.sum()
           if a > b:
           one = sum(x)
           zero = len(x) - sum(x)
           if one > zero:
               print("OK")
       elif i == 1:
           one = sum(x)
           zero = len(x) - sum(x)
           if one > zero:
               print("BAD")
if __name__ == '__main__':
   root = Tk()
   root.title('Scrollbar 1')
   # Frame
   frame1 = ttk.Frame(root, padding=10)
   frame1.grid()
   # Listbox
   currencies = (1, 2, 4, 5, 6, 7)
   currencies = ("A", "B")
   v1 = StringVar(value=currencies)
   lb = Listbox(frame1, listvariable=v1,height=3)
   lb.grid(row=0, column=0)
   # Scrollbar
   scrollbar = ttk.Scrollbar(
       frame1,
       orient=VERTICAL,
       command=lb.yview)
   lb['yscrollcommand'] = scrollbar.set
   scrollbar.grid(row=0,column=1,sticky=(N,S))
   #Button  
   button1 = ttk.Button(frame1, text='OK', command=button_click)  
   button1.grid(row=1, column=0, columnspan=2)  
 
   a = [0,0,0,0,1,1,1]
   b = [1,1,1,1,1,0,0]
 
   #Button  
   button1 = ttk.Button(frame1, text='OK', command=lambda: show_selection(a))  
   button1.grid(row=1, column=0, columnspan=2)  
   root.mainloop()
```
以上のコードでリストボックの中の1が選択されたときに、リストaの中の0の数が多い場合に「OK」と表示し、
リストボックスの中の4が選択されたときには、リストbの中の1が多い場合に「OK」と表示したいです
リストボックスのAが選ばれた時には、リストaに対して0の数が多ければ「OK」と表示。
リストボックスのBが選ばれた時には、リストbに対して1の数が多ければ「OK」と表示
関数 show_selection(x)でリストを引数として渡せば良いとおもってやってみたのですが、うまくいきません
以上のように実行したいと考えています
  • Python

    23379 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る