2017-09-23 17 views
1

クリックするとイベントは発生しません。wxpythonボタンがブロックされている/クリックされていない

私はPythonで簡単なデータ可視化のためのシンプルな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を作成してください。

関連する問題