erneut bin ich auf ein Problem gestoßen, wofür es keine für mich verständlich Antwort gibt. Ich habe wie schon im Thread von vorhin "wx Fenster ohne Systembar?" erklärt das ich ein Sudokuspiel programmiere und bin auch schon ein guten Stück voran gekommen aber nun gehts nicht weiter.
Ich habe nun ein wxFrame mit 9 TextCtrl´s und den Zahlen 1-9.
Soweit so gut jetzt benötige ich ein MouseEvent für den Linksklick, das wenn ich mit der linken Maustaste auf eine Zahl klicke, der entsprechende Wert zurückgegeben wird und das Fenster anschließend terminiert wird.
Dazu habe ich mir schon mal das Mouseevent angeguckt:
http://docs.wxwidgets.org/2.8.6/wx_wxmo ... mouseevent
Ich weiß aber nicht genau wie man sich einen Eventhandler schreibt. Für einen Tipp oder eien kleien Anstoß wäre ich euch sehr dankbar.
EDIT:
Ich hab hier mal das Fenster was erzeugt wird. Ich hab auch schon das Mouseevent hinzugefügt, aber wenn jetzt auf eine Zahl geklickt wird, dann weiss ich noch nicht wie ich ihm sagen soll das es z.B. die 1 oder die 9 ist. Ich brauche die Referenz auf das angeklickte TextCtrl.
Bitte nicht den Code so stak bewerten das is alles noch "quick und dirty"
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
#from gui_sudoku import SudokuFrame
class ChoiseField(wx.Frame):
"""
Main Frame
"""
def __init__(self):
wx.Frame.__init__(self, None, -1, "Zahlenauswahl", size=(150, 150), style = wx.CAPTION)
self.panel = wx.Panel(self, -1)
self.gridOut = wx.GridSizer(1,1)
row = []
for elementX in range(9):
newfield = wx.TextCtrl(parent = self.panel, id = -1, style = wx.TE_READONLY | wx.TE_CENTRE)
row.append(newfield)
font1 = wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, u'Comic Sans MS')
gridIn = wx.GridSizer(3,3,2,2)
num = 0
for cell in row:
num += 1
cell.SetFont(font1)
cell.SetValue(str(num))
gridIn.Add(cell, 1, wx.EXPAND | wx.ALL, 0)
self.gridOut.Add(gridIn, 1, wx.EXPAND | wx.ALL,0)
self.panel.SetSizerAndFit(self.gridOut)
self.Centre()
self.Show(True)
for ctrl in range(9):
row[ctrl].Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
def OnLeftDown(self, event):
"""left mouse button is pressed"""
pt = event.GetPosition() # position tuple
print pt
if __name__ == "__main__":
app = wx.App(False)
frame = ChoiseField()
app.MainLoop()
MfG Schaf220