2017-02-25 4 views
1

Ich versuche, eine GUI mit 2 Tasten zu machen. Aber ich laufe immer wieder auf den gleichen Fehler.GUI mit Python mit Tkinter, Fehler

import pandas as pd 
import matplotlib.pyplot as plt 
import tkinter as t 

def onpick3(event): 
     ind = event.ind 
     print("ID:", ind[0]+4, ", Name:",method[ind[0]+2], ", Value-x:",x[ind[0]+2]) 

def plotpareto(): 
    fig = plt.figure() 
    ax1 = fig.add_subplot(111) 

    ax1.scatter(x[2:], y[2:], picker=True) 
    for i in index: 
     ax1.scatter(x[i], y[i], c = "r") 
    fig.canvas.mpl_connect('pick_event', onpick3) 
    plt.show() 

def compute(): 
    first = input("Enter Highest Priority: ") 
    second = input("Enter Next Highest Priority: ") 
    imp = input("Enter Implementation: ") 
    if first == 'GC': 
     if imp == 'P02': 
      col1 = 'P02.1' 
     if imp == 'P01': 
      col1 == 'P01.1' 
     if imp == 'Wille': 
      col1 = 'Wille.1' 
     if imp == 'ISM': 
      col1 = 'ISM.1' 
    if second == 'GC': 
     if imp == 'P02': 
      col2 = 'P02.1' 
     if imp == 'P01': 
      col2 == 'P01.1' 
     if imp == 'Wille': 
      col2 = 'Wille.1' 
     if imp == 'ISM': 
      col2 = 'ISM.1' 
    if first == 'QC': 
     if imp == 'P02': 
      col1 = 'P02.2' 
     if imp == 'P01': 
      col1 == 'P01.2' 
     if imp == 'Wille': 
      col1 = 'Wille.2' 
     if imp == 'ISM': 
      col1 = 'ISM.2' 
    if second == 'QC': 
     if imp == 'P02': 
      col2 = 'P02.2' 
     if imp == 'P01': 
      col2 == 'P01.2' 
     if imp == 'Wille': 
      col2 = 'Wille.2' 
     if imp == 'ISM': 
      col2 = 'ISM.2' 

    xl = pd.read_excel("Treecover1.xlsx", na_values = '1000') 
    global x 
    global y 

    x = list(xl[col1]) 
    y = list(xl[col2]) 
    global method 
    method = list(xl['Methods']) 

    minx = 9999 
    temp = [] 

    i = 2 
    while i < len(x): 
     if int(x[i]) < minx and int(x[i]) != 0: 
      temp.clear() 
      temp.append(i) 
      minx = x[i] 
     elif int(x[i]) == minx: 
      temp.append(i) 
     i+=1 

    miny = y[temp[0]] 

    index = [] 
    for j in temp: 
     if y[j] < miny and y[j] != 0: 
      miny = y[j] 
      index.clear() 
      index.append(j) 
     elif y[j] == miny: 
      index.append(j) 

"""window = t.Tk() 
btn = t.Button(window, text = 'Compute') 
btn1 = t.Button(window, text = 'Plot') 
btn.pack() 
btn1.pack()`enter code here` 
window.mainloop()""" 

Fehler: 2017.02.25 22: 05: 41,256 Python [85189: 5.428.235] - [NSApplication _setup]: unerkannte Selektor Instanz gesendet 0x1053ca2a0 2017.02.25 22: 05: 41,257 Python 05: [85189: 5428235] Eine abgefangene Ausnahme 2017.02.25 22 angehoben wurde 41,257 Python [85189: 5428235] - [NSApplication _setup:]: Unbekannter Selektor gesendet Instanz 0x1053ca2a0

Bitte helfen.

+0

>>> aus appJar Import gui >>> app = gui() Traceback (jüngste Aufforderung zuletzt): File "" Linie 1 in Datei „/ Library/Frameworks/Python .framework/Versions/3.6/lib/python3.6/site-packages/appJar/appjar.py ", Zeile 410, in __init__ self.exe_file = os.path.basename (theMain .__ file__) AttributeError: Modul '__main__ 'hat kein Attribut' __file__ ' –

Antwort

0

Dieser Code funktioniert für mich; Die Schaltflächen sind jedoch nicht mit den Funktionen dieses Codes verknüpft, so dass sie beim Drücken nichts tun. Unabhängig davon, folgende GUI-Anzeigen ohne Fehler:

enter image description here

Mein erster Gedanke, als Python-Code auf einer Maschine arbeitet und nicht ist eine andere, dass eine unerwartete Version von Python ausgeführt wird, wenn ich das Programm ausführen (dh 2. X in diesem Fall statt 3.X) oder eines meiner externen Module (z. B. pandas, matplotlib oder tkinter) ist beschädigt oder verhält sich auf der verdächtigen Maschine andersartig.

Es wäre sinnvoll sein, die Folgendes zu wissen:

  1. Ist der aktuelle Code (genau wie) für Sie einen Fehler werfen?
  2. Wenn ja, ist das die volle Fehlerausgabe? Normalerweise verfolgt Python einen Fehler auf eine bestimmte Zeile zurück, was natürlich sehr hilfreich wäre.
  3. Wenn möglich, könnten Sie sehen, ob dieses Problem mit Dummy-Daten anstelle der Tabelle repliziert werden kann? Es wird schwierig für jedermann außer Ihnen sein, diesen Code richtig zu testen, ohne die Tabelle zu verwenden, die Sie verwenden. Nur ein Gedanke.
+0

Wissen Sie, wie Sie Python auf Mac neu installieren? –

+0

Ich bin selbst kein Mac-Typ, also zögere ich, hier einen Rat zu geben. [This] (http://docs.python-guide.org/en/latest/starting/install/osx/) Artikel kann nützlich sein. Ich bin geneigt zu sagen, dass eine Neuinstallation von Python so aussieht, als wäre es in dieser Situation übertrieben, aber ich kann auch nicht behaupten, zu wissen, was den Fehler an diesem Punkt verursacht. Eine schnelle Websuche ergab einige Gemeinsamkeiten unter Menschen, die diesen Fehler hatten: Mac, Matplotlib und Tkinter. An dieser Stelle scheint mir eher ein Modulproblem zu sein. –

+0

>>> aus appJar Import gui >>> app = gui() Traceback (jüngste Aufforderung zuletzt): File "" Linie 1 in File „/Library/Frameworks/Python.framework/Versions /3.6/lib/python3.6/site-packages/appJar/appjar.py ", Zeile 410, in __init__ self.exe_file = os.path.basename (theMain.__file__) Attribute: Modul ‚__main__‘ hat kein Attribut ‚__file__‘ Daraus ergibt sich ein Fehler von selbst –