ясно… ты случайно не можешь мне помочь вот в этом - как отобразить Html страницы в нужном порядке?
Программный код программы, суть которого состоит в следующем: главное окно программы поделено на 3 колонки, каждая из которых по сути является окном браузера. Мне нужно сделать так, чтобы когда я из первой колонки нажму на ссылку, откроется это ссылка во второй колонке, а когда я нажму на ссылку во второй колонке - то откроется в 3-й колонке… Для чего это нужно!!!! Суть - это прога для отображения прайс листов магазинов… в первой колонке у меня названия магазина, кликнули по названию –> отобразились категории товаров во второй колонке, которые данный магазин реализует, далее кликнули по категории –> отобразился весь товар этой категории в третьей колонке… Вопрос КАК сделать отображение HTML страниц по такой иерархии?
#!/usr/bin/python
# -*- coding: utf-8 -*-
from wxPython.wx import *
from wxPython.html import *
import os,sys
class exHtmlWindow(wxHtmlWindow):
def __init__(self, parent, id, frame):
wxHtmlWindow.__init__(self,parent,id)
# получение адреса кликнутой ссылки
def OnLinkClicked(self, link):
print "url = ",link.GetHref()
link=link.GetHref()
self.LoadPage(link)
# класс панели (контейнер для всех виджетов)
class exHtmlPanel(wxPanel):
def __init__(self, parent, id, frame):
wxPanel.__init__(self, parent, -1)
self.frame = frame
self.cwd = os.path.split(sys.argv[0])[0]
if not self.cwd:
self.cwd = os.getcwd
self.box = wxBoxSizer(wxVERTICAL)
# блок с кнопками
subbox = wxBoxSizer(wxHORIZONTAL)
btn = wxButton(self, 1202, u"Загрузка файла")
EVT_BUTTON(self, 1202, self.OnLoadFile)
subbox.Add(btn, 1, wxGROW | wxALL, 2)
btn = wxButton(self, 1203, u"Переход на страницу")
EVT_BUTTON(self, 1203, self.OnLoadPage)
subbox.Add(btn, 1, wxGROW | wxALL, 2)
btn = wxButton(self, 1204, u"<-- Назад")
EVT_BUTTON(self, 1204, self.OnBack)
subbox.Add(btn, 1, wxGROW | wxALL, 2)
btn = wxButton(self, 1205, u"Вперед -->")
EVT_BUTTON(self, 1205, self.OnForward)
subbox.Add(btn, 1, wxGROW | wxALL, 2)
self.box.Add(subbox, 0, wxGROW)
self.SetSizer(self.box)
self.SetAutoLayout(true)
# ОКНА
subbox = wxBoxSizer(wxHORIZONTAL)
html = exHtmlWindow(self, -1, self.frame)
html.LoadPage("offers.html") # загрузка нужной страницы
subbox.Add(html, 2, wxGROW | wxALL, 2)
html2 = exHtmlWindow(self, -1, self.frame)
subbox.Add(html2, 2.2, wxGROW | wxALL, 2)
html3 = exHtmlWindow(self, -1, self.frame)
subbox.Add(html3, 3, wxGROW | wxALL, 2)
self.box.Add(subbox, 1, wxGROW)
def OnLoadPage(self, event):
dlg = wxTextEntryDialog(self, u'Введите адрес страницы:', 'Переход')
if dlg.ShowModal() == wxID_OK:
self.destination = dlg.GetValue()
dlg.Destroy()
self.html.LoadPage(self.destination)
def OnLoadFile(self, event):
dlg = wxFileDialog(self, wildcard = '*.htm*', style=wxOPEN)
if dlg.ShowModal():
path = dlg.GetPath()
self.html1.LoadPage(path)
dlg.Destroy()
def OnBack(self, event):
if not self.html.HistoryBack():
wxMessageBox(u"Больше нет посещенных страниц!")
def OnForward(self, event):
if not self.html.HistoryForward():
wxMessageBox(u"Больше нет посещенных страниц!")
# Подарим нашему окну собственную иконку self.SetIcon(wx.IconFromBitmap(icon))
icon = wx.Bitmap('logo2.png')
self.SetIcon(wx.IconFromBitmap(icon))
# класс главного окна:
class exFrame(wxFrame):
def __init__(self, parent, ID, title):
wxFrame.__init__(self, parent, ID, title, wxDefaultPosition, wxSize(600,750))
panel = exHtmlPanel (self, -1, self) # создание панели
# создание статусной строки
self.CreateStatusBar()
# статус по умолчанию
self.SetStatusText(u"Статус по умолчанию")
mnu_file = wxMenu() # создание колонки меню
mnu_file.Append(101, u"Выход", u"Нажмите чтобы выйти из браузера") # добавление пункта меню ВЫХОД с подсказкой
mnu_file.AppendSeparator() # добавление разделителя в меню
mnu_file.Append(102, u'О программе', u'Нажмите чтобы посмотреть сведения программы ') # добавление пункта меню О программе
menuBar = wxMenuBar() # создание строки меню
menuBar.Append(mnu_file, u"Файл") # добавление созданной колонки меню в строку меню
self.SetMenuBar(menuBar) # установка созданной строки меню
EVT_MENU(self, 101, self.Exit) # привязка кнопки меню к событию - выход
EVT_MENU(self, 102, self.OnAbout) # привязка кнопки меню к событию - о программе
def Exit(self, event):
self.Close(true)
def OnAbout(self, event):
# вывод всплывающего модального окна сообщения:
wx.MessageBox(u'Пробная версия!!! ', u'О программе', wx.OK | wx.ICON_INFORMATION, self)
# класс приложения. Каждая программа должна иметь один такой объект
class exApp(wxApp):
def OnInit(self): # Метод OnInit() - вызывается при запуске приложения
# для отображения изображений
wxInitAllImageHandlers()
# создание главного окна:
frame = exFrame(NULL, -1, u"Мой браузер")
# отображение главного окна:
frame.Show(true)
# определение главного окна приложения:
self.SetTopWindow(frame)
return true
app = exApp(0)
app.MainLoop() # Запускаем бесконечный цикл, который будет обрабатывать все сообщения в нашей программе.