Hi, I'm having some problems with FlatNotebook.py and i hope you can help me. I'm sure that is very easy for an experinced user but i can't figured it out, i just start using wxpython.
The problem is that i don't know how to put diferent king of widgets on every notebook page. For example when i select page1, I want ot see three checkboxes and one button and when i select page2 two buttons and ten radio buttons, all in different positions than the previous page. Considering I have the following sample code how can i do that:
#code -
import wx
-
import FlatNotebook as FNB
-
import random
-
-
class MenuEventFrame(wx.Frame):
-
-
def __init__(self, parent, id):
-
wx.Frame.__init__(self, parent, id, 'Menus', size=(450, 200), pos=(500,400))
-
self.panel=wx.Panel (self, -1)
-
#self.panel.SetBackgroundColour ("white")
-
menuBar = wx.MenuBar()
-
menu1 = wx.Menu()
-
menuItem = menu1.Append(-1, "&Exit...")
-
menuBar.Append(menu1, "&File")
-
self.SetMenuBar(menuBar)
-
-
dd="Page1"
-
dd1="Page2"
-
dd2="Page3"
-
-
caption = "test"
-
-
stil = FNB.FNB_VC8 | FNB.FNB_DROPDOWN_TABS_LIST | FNB.FNB_TABS_BORDER_SIMPLE | FNB.FNB_BACKGROUND_GRADIENT
-
self.book = FNB.FlatNotebook(self, wx.ID_ANY, style=stil)
-
self.book.SetTabAreaColour(wx.Color(0,153,204))
-
self.book.AddPage(self.panel, dd, True, -1)
-
self.book.AddPage(self.panel, dd1, True, -1)
-
self.book.AddPage(self.panel, dd2, True, -1)
-
self.book.SetSelection(1)
-
-
-
-
def CreatePage(self, caption):
-
p = wx.Panel(self.book)
-
wx.StaticText(p, -1, caption, (20,20))
-
wx.TextCtrl(p, -1, "", (20,40), (150,-1))
-
p.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_BTNFACE))
-
return p
-
-
-
if __name__ == '__main__':
-
app = wx.PySimpleApp()
-
frame = MenuEventFrame(parent=None, id=-1)
-
frame.Show()
-
app.MainLoop()
-
#end code
In conclusion i want to show different widgets on different notebook pages and of course bind an event to every widget.
Thank you.
4 5125
Thanks for the post (and you came SO close to getting the [ CODE ] tags right - instructions are on the right hand side in REPLY GUIDELINES when you reply).
Instead of -
self.book.AddPage(self.panel, dd, True, -1)
-
self.book.AddPage(self.panel, dd1, True, -1)
-
self.book.AddPage(self.panel, dd2, True, -1)
-
You need to create more than on panel (with the widgets that you want on each page and then: -
self.book.AddPage(self.panel1, dd, True, -1)
-
self.book.AddPage(self.panel2, dd1, True, -1)
-
self.book.AddPage(self.panel3, dd2, True, -1)
-
Hope that helps!
Hope that helps!
Yes, it helps, thank you very much, but now i'm having a more complex problem, I hope you can help me.
Basically what i want to do is to add a splitter window inside an flat notebook page, then inside the splitter window, on left panel add a label notebook. the problem is neither splitter window nor labelbook is created.
Here is sample code but it's obviously wrong because it's not working. Flatnotebook is created with all 4 pages but not the other ones. : - import wx
-
import FlatNotebook as FNB
-
import random
-
import data
-
import LabelBook as LB
-
from Resources import *
-
-
-
_pageTexts = ["Hello", "From", "wxPython", "LabelBook", "Demo"]
-
_pageIcons = ["roll.png", "charge.png", "add.png", "decrypted.png", "news.png"]
-
_pageColours = [wx.RED, wx.GREEN, wx.WHITE, wx.BLUE, "Pink"]
-
-
class Panel(wx.Panel):
-
-
def __init__(self, parent, colour, label):
-
-
wx.Panel.__init__(self, parent, style=wx.BORDER_SUNKEN)
-
self.SetBackgroundColour(colour)
-
-
label = label + "Demo"
-
static = wx.StaticText(self, -1, label, pos=(10, 10))
-
-
-
class MenuEventFrame(wx.Frame):
-
-
def __init__(self, parent, id):
-
wx.Frame.__init__(self, parent, id, 'Demo', size=(640, 480), pos=(500,400))
-
-
self.panel=wx.Panel (self, -1)
-
self.panel1=wx.Panel (self, -1)
-
self.panel2=wx.Panel (self, -1)
-
self.panel3=wx.Panel (self, -1)
-
-
-
#splitter window
-
self.splitter = wx.SplitterWindow(self.panel, -1, style=wx.SP_3D|wx.SP_BORDER|
-
wx.SP_LIVE_UPDATE|wx.SP_3DSASH)
-
sty = wx.BORDER_SUNKEN
-
p1 = wx.Window(self.splitter, style=sty)
-
p1.SetBackgroundColour("blue")
-
wx.StaticText(p1, -1, "Panel One", (5,5))
-
p2 = wx.Window(self.splitter, style=sty)
-
p2.SetBackgroundColour("sky blue")
-
wx.StaticText(p2, -1, "Panel Two", (5,5))
-
self.splitter.SetMinimumPaneSize(20)
-
self.splitter.SplitVertically(p1, p2, -100)
-
self.splitter.SetMinimumPaneSize(120)
-
-
-
-
#menu bar
-
menuBar = wx.MenuBar()
-
menu1 = wx.Menu()
-
menuItem = menu1.Append(-1, "&Exit...")
-
menuBar.Append(menu1, "&File")
-
self.SetMenuBar(menuBar)
-
self.Bind(wx.EVT_MENU, self.OnCloseMe, menuItem)
-
-
-
#flat notebook
-
stil = FNB.FNB_VC8 | FNB.FNB_DROPDOWN_TABS_LIST | FNB.FNB_TABS_BORDER_SIMPLE | FNB.FNB_BACKGROUND_GRADIENT
-
self.book = FNB.FlatNotebook(self, wx.ID_ANY,pos=(100, 300),size=(100, 100), style=stil)
-
self.book.SetTabAreaColour(wx.Color(0,153,204))
-
self.book.AddPage(self.panel, "Main Application", True, -1)
-
self.book.AddPage(self.panel1, "Configuration", True, -1)
-
self.book.AddPage(self.panel2, "Favorites", True, -1)
-
self.book.AddPage(self.panel3, "Favorites", True, -1)
-
-
-
self.book1 = LB.LabelBook(self.panel, -1, style=INB_GRADIENT_BACKGROUND)
-
for indx, txts in enumerate(_pageTexts):
-
label = "This is panel number %d"%(indx+1)
-
self.book.AddPage(Panel(self.book1, _pageColours[indx], label),
-
txts, True, indx)
-
-
-
def OnCloseMe(self, event):
-
self.Close(True)
-
-
-
if __name__ == '__main__':
-
app = wx.PySimpleApp()
-
frame = MenuEventFrame(parent=None, id=-1)
-
frame.Show()
-
app.MainLoop()
-
-
I will be very grateful if you can help me with this because i'm kinda lost.
I don't know enough about splitter windows to get all the properties set just right.
For that matter I never write the GUI part of my programs. Here is what I consider to be a well-factored wx.Frame definition might look like (as generated by Boa Constructor): - #Boa:Frame:Frame1
-
-
import wx
-
-
def create(parent):
-
return Frame1(parent)
-
-
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1NOTEBOOK1, wxID_FRAME1NOTEBOOK2, wxID_FRAME1PANEL1,
-
wxID_FRAME1SPLITTERWINDOW1, wxID_FRAME1STATICTEXT1,
-
] = [wx.NewId() for _init_ctrls in range(7)]
-
-
class Frame1(wx.Frame):
-
def _init_coll_boxSizer1_Items(self, parent):
-
# generated method, don't edit
-
-
parent.AddWindow(self.panel1, 1, border=0, flag=wx.EXPAND)
-
-
def _init_coll_boxSizer2_Items(self, parent):
-
# generated method, don't edit
-
-
parent.AddWindow(self.notebook1, 1, border=0, flag=wx.EXPAND)
-
-
def _init_coll_notebook2_Pages(self, parent):
-
# generated method, don't edit
-
-
parent.AddPage(imageId=-1, page=self.staticText1, select=True, text='Pages0')
-
-
def _init_coll_notebook1_Pages(self, parent):
-
# generated method, don't edit
-
-
parent.AddPage(imageId=-1, page=self.splitterWindow1, select=True, text='Pages0')
-
-
def _init_sizers(self):
-
# generated method, don't edit
-
self.boxSizer1 = wx.BoxSizer(orient=wx.VERTICAL)
-
-
self.boxSizer2 = wx.BoxSizer(orient=wx.VERTICAL)
-
-
self._init_coll_boxSizer1_Items(self.boxSizer1)
-
self._init_coll_boxSizer2_Items(self.boxSizer2)
-
-
self.SetSizer(self.boxSizer1)
-
self.panel1.SetSizer(self.boxSizer2)
-
-
def _init_ctrls(self, prnt):
-
# generated method, don't edit
-
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt, pos=wx.Point(304, 151),
-
size=wx.Size(732, 517), style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
-
self.SetClientSize(wx.Size(724, 490))
-
-
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self, pos=wx.Point(0, 0),
-
size=wx.Size(724, 490), style=wx.TAB_TRAVERSAL)
-
-
self.notebook1 = wx.Notebook(id=wxID_FRAME1NOTEBOOK1, name='notebook1', parent=self.panel1,
-
pos=wx.Point(0, 0), size=wx.Size(724, 490), style=0)
-
-
self.splitterWindow1 = wx.SplitterWindow(id=wxID_FRAME1SPLITTERWINDOW1,
-
name='splitterWindow1', parent=self.notebook1, pos=wx.Point(0, 0), size=wx.Size(716,
-
464), style=wx.SP_LIVE_UPDATE | wx.SP_3D)
-
self.splitterWindow1.SetNeedUpdating(True)
-
-
self.notebook2 = wx.Notebook(id=wxID_FRAME1NOTEBOOK2, name='notebook2',
-
parent=self.splitterWindow1, pos=wx.Point(0, 0), size=wx.Size(282, 464),
-
style=wx.NB_LEFT)
-
-
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label='button1', name='button1',
-
parent=self.splitterWindow1, pos=wx.Point(286, 0), size=wx.Size(430, 464), style=0)
-
self.splitterWindow1.SplitVertically(self.notebook2, self.button1, 200)
-
-
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1, label='staticText1',
-
name='staticText1', parent=self.notebook2, pos=wx.Point(0, 0), size=wx.Size(254,
-
456), style=0)
-
-
self._init_coll_notebook1_Pages(self.notebook1)
-
self._init_coll_notebook2_Pages(self.notebook2)
-
-
self._init_sizers()
-
-
def __init__(self, parent):
-
self._init_ctrls(parent)
-
-
if __name__ == '__main__':
-
app = wx.PySimpleApp()
-
frame = create(parent=None)
-
frame.Show()
-
app.MainLoop()
-
If you are interested in trying the latest version of Boa Constructor, there are instruction for getting if from the CVS on SourceForge here.
Sign in to post your reply or Sign up for a free account.
Similar topics
by: Daniel Ehrenberg |
last post by:
I'm trying to learn wxPython, but I can't seem to find much
documentation. The wxPython website says that all advanced (and even
some basic) documentation for wxPython is only available in C++...
|
by: SeeBelow |
last post by:
Do many people think that wxPython should replace Tkinter? Is this
likely to happen?
I ask because I have just started learning Tkinter, and I wonder if I
should abandon it in favor of...
|
by: Grant Edwards |
last post by:
Can anybody recommend a good book on wxPython? Are there any
books on wxPython?
I've been trying to learn wxPython and/or wax for a few weeks,
and I'm just not getting it.
wxWindows seems...
|
by: timothy.williams |
last post by:
I'm trying to install wxPython 2.5.3.1 using Python 2.3.2 on a Fedora 2
machine.
I have python in a non-standard place, but I'm using --prefix with the
configure script to point to where I have...
|
by: Mario |
last post by:
Hello all, I'm trying hard to make possible to print some simple text from
python to the default printer using wxPython, after days of internet
searches I found this page:...
|
by: Robin Dunn |
last post by:
Announcing
----------
The 2.6.3.0 release of wxPython is now available for download at
http://wxpython.org/download.php. There have been many enhancements
and fixes implemented in this...
|
by: tomKeating |
last post by:
First I am new to both python and wxPython. I have developed a couple of applications for myself with Paradox, but it is time to move on.
I am having difficulty creating a solid background for a...
|
by: stef |
last post by:
hello,
I'm trying to move from Delphi to Python
(move from MatLab to Python already succeeded, also thanks to this
discussion group).
From the discussions in this list about "the best" GUI for...
|
by: ahlongxp |
last post by:
Sorry, I know this is not the most appropriate place to talk about
wxPython.
But I can't have access to wxPython mail list page(because I don't pay
enough).
I downloaded python2.5 and wxPython...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
| |