【问题标题】:how to execute python code with tkinter user input如何使用 tkinter 用户输入执行 python 代码
【发布时间】:2017-02-18 09:23:46
【问题描述】:

当用户在此 tkinter 代码 (tkintt.py) 中输入集群并单击提交按钮时,我希望程序根据用户输入的集群数量执行 k-medoids 代码 (example.py),但会出现一些错误。 你能帮帮我吗?

tkintt.py

import Tkinter
from _tkinter import *
root = Tkinter.Tk()

label1 = Tkinter.Label(text = " enter cluster : ")
label1.pack()
clvar = Tkinter.IntVar()
cluster = Tkinter.Entry(bd = 5)
clvar = cluster.get()
cluster.pack()

def open1():
  print ("K-MEDOIDS CLUSTERING")
  execfile('example.py')

button_1 = Tkinter.Button(text = "SUBMIT", command = open1)
button_1.pack()
root.mainloop()

example.py

from k_medoids import KMedoids
import numpy as np
import matplotlib.pyplot as plt


def example_distance_func(data1, data2):
   '''example distance function'''
   return np.sqrt(np.sum((data1 - data2)**2))

if __name__ == '__main__':
   X = np.random.normal(0,3,(500,2))
   model = KMedoids(n_clusters= cluster, dist_func=example_distance_func)
   model.fit(X, plotit=True, verbose=True)
   plt.show()

错误:

    Traceback (most recent call last):
    File "C:\Users\user\Anaconda2\lib\lib-tk\Tkinter.py", line 1537, in __call__
      return self.func(*args)
    File "C:/Users/user/Anaconda2/K_Medoids-master/tkintt.py", line 15, in open1
      execfile('example.py')
    File "example.py", line 13, in <module>
      model.fit(X, plotit=True, verbose=True)
    File "C:\Users\user\Anaconda2\K_Medoids-master\k_medoids.py", line 114, in       fit
    X,self.n_clusters, self.dist_func, max_iter=self.max_iter, tol=self.tol,verbose=verbose)
    File "C:\Users\user\Anaconda2\K_Medoids-master\k_medoids.py", line 54, in _kmedoids_run members, costs, tot_cost, dist_mat = _get_cost(X, init_ids,dist_func)
    File "C:\Users\user\Anaconda2\K_Medoids-master\k_medoids.py", line 37, in _get_cost mask = np.argmin(dist_mat,axis=1)
    File "C:\Users\user\Anaconda2\lib\site-packages\numpy\core\fromnumeric.py", line 1034, in argmin return argmin(axis, out)
    ValueError: attempt to get argmin of an empty sequence

【问题讨论】:

  • 只需创建一个包装函数来绕过 KMedoids,并在单击按钮时运行它。
  • @leaf 怎么办?我很混乱。你能写出我应该在我的代码中添加的内容吗?
  • 你能把你得到的错误贴出来吗?
  • @TheInitializer 我刚刚发布了它

标签: python python-2.7 tkinter pycharm cluster-analysis


【解决方案1】:

看起来好像 k-medoid 不能正确处理所有极端情况。

很可能,您有一个空集群。

【讨论】:

  • 那么,如何从 tkinter GUI 中的用户输入中获取集群值?我应该在哪里编辑?
  • 如果集群崩溃,则没有集群值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多