2017-09-23 2 views
1

클릭하면 이벤트가 실행되지 않습니다.wxpython 버튼이 차단되었거나 클릭되지 않았습니다.

뭔가가, 메인 패널에서 정말 아무것도 버튼과 선택을 차단 것처럼

이 보인다 파이썬에서 간단한 데이터 시각화를위한 간단한 GUI를 제작하고있다.

작동하지만 그 다음 그래프를 matplotlib에서 배치했습니다. 게재 위치/박스와 관련이 있다고 생각하지만 저의 삶에 대해 알 수는 없습니다.

도움을 주시면 감사하겠습니다.

import sys 
from random import * 
import signal 
import sqlite3 
from datetime import date, datetime 
import wx 
import wx.lib.mixins.inspection as WIT 
import matplotlib 
from numpy import arange, sin, pi 

matplotlib.use('WX') 
from matplotlib.backends.backend_wx import FigureCanvasWx as FigureCanvas 
from matplotlib.backends.backend_wx import NavigationToolbar2Wx 

from matplotlib.figure import Figure 
class myGui(wx.Frame): 
    def __init__(self,parent,id,title): 
     wx.Frame.__init__(self,parent,id,title) 
     self.parent = parent 
     self.initialise() 
     pnl = wx.Panel(self) 


     self.figure = Figure() 
     self.axes = self.figure.add_subplot(111) 
     t = arange(0.0, 3.0, 0.01) 
     s = sin(2 * pi * t) 

     self.axes.plot(t, s) 
     self.canvas = FigureCanvas(self, -1, self.figure) 

     self.sizer = wx.BoxSizer(wx.HORIZONTAL) 


     rightMenuBtns = wx.BoxSizer(orient=wx.VERTICAL) 

     self.sizer.Add(rightMenuBtns, proportion = 1, flag=wx.LEFT | wx.ALL, border = 5) 
     self.sizer.Add(self.canvas, 1, wx.RIGHT | wx.TOP | wx.EXPAND) 
     fileMenu = wx.Menu() 
     loadFile = fileMenu.Append(wx.ID_OPEN) 
     exitItem = fileMenu.Append(wx.ID_EXIT) 

     helpMenu = wx.Menu() 
     aboutItem = helpMenu.Append(wx.ID_ABOUT) 

     self.problems = wx.Choice(pnl,choices = allProblems()) 
     rightMenuBtns.Add(self.problems, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5) 

     self.solutions = wx.Choice(pnl,choices = allSolutionsText(allProblems()[self.problems.GetSelection()])) 
     rightMenuBtns.Add(self.solutions, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5) 

     solve = wx.Button(pnl, label="SOLVE") 
     rightMenuBtns.Add(solve, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5) 

     menuBar = wx.MenuBar() 
     menuBar.Append(fileMenu, "&File") 
     menuBar.Append(helpMenu, "&Help") 

     self.SetMenuBar(menuBar) 

     self.Bind(wx.EVT_MENU, self.OnExit, exitItem) 
     self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem) 
     self.Bind(wx.EVT_MENU, self.loadFile, loadFile) 
     self.Bind(wx.EVT_BUTTON, self.Solve, solve) 
     self.solutions.Bind(wx.EVT_CHOICE, self.Solutions) 
     self.problems.Bind(wx.EVT_CHOICE, self.Problems) 

     self.dlg = wx.TextEntryDialog(pnl, 'Enter the amount of seconds you want to run solver for:','Time') 

     self.SetSizer(self.sizer) 
     self.Fit() 

    def initialise(self): 
     self.Show(True) 

    def OnExit(self, event): 
     self.Close(True) 

    def OnAbout(self, event): 
     wx.MessageBox("Hello", 
     "Made By Thomas Csere",          wx.OK | wx.ICON_INFORMATION) 

    def loadFile(self, event): 
     openFileDialog = wx.FileDialog(self, "Open", "", "", 
             "Traveling Salesman Problem (*.tsp)|*.tsp", 
             wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) 
     openFileDialog.ShowModal() 
     addProblem(openFileDialog.GetPath()) 
     wx.MessageBox("Problem Added") 
     openFileDialog.Destroy() 

    def Problems(self,event): 
     print("woo") 
     self.solutions.Clear() 
     self.solutions.AppendItems(allSolutionsText(allProblems()[self.problems.GetSelection()])) 

    def Solutions(self,event): 
     print("yay") 

    def Solve(self,event): 

     self.dlg.ShowModal() 
     if(self.problems.GetSelection()>=0): 
      solveFull(allSolutionsText(allProblems()[self.problems.GetSelection()], self.dlg.GetValue())) 



app = wx.App() 
frame = myGui(None,-1,"My Application") 
app.MainLoop() 
+0

나는 그 코드에서 에디터로 오류가있는'find and replace'를 수행했다고 의심합니다. 수많은 함수/변수가 코드에서 완전히 빠져 있습니다. 누군가 실제로 그것을 잘못 생각하기 전에 해결해야 할 것입니다. –

답변

0

당신은 패널을 절대로 사이버에 추가하지 않으므로 아마도 그것은 FigureCanvas와 겹칠 것입니다.

또한 대개 대화 상자를 오랫동안 만들지 않고 유지하는 것이 좋습니다. 보여줄 필요가있을 때만 생성하고 그 값을 가져온 후에 Destroy을 만듭니다.