wxPython格式问题

wxPython格式问题,python,wxpython,Python,Wxpython,我有一个应用程序,我一直在工作,以了解更多关于wxPython(我一直主要是一个脚本)。我忘了,现在我要重新打开它。这是一个屏幕刮刀,我让它几乎按照我想要的方式工作,我将构建一个正则表达式解析器来去除我不需要的每个刮刀中的链接。我的问题是这个。在它的当前状态下,如果我检查多个站点,它将退出并刮取,并在单独的窗口中返回,即单击函数中的for:each部分。我想把它们放在一个框架里,放在窗户里。我还想知道我是否可以将它们读入列表并发送到清单中,以便有人可以检查单独的项目,我想构建一个保存功能并保留某

我有一个应用程序,我一直在工作,以了解更多关于wxPython(我一直主要是一个脚本)。我忘了,现在我要重新打开它。这是一个屏幕刮刀,我让它几乎按照我想要的方式工作,我将构建一个正则表达式解析器来去除我不需要的每个刮刀中的链接。我的问题是这个。在它的当前状态下,如果我检查多个站点,它将退出并刮取,并在单独的窗口中返回,即单击函数中的for:each部分。我想把它们放在一个框架里,放在窗户里。我还想知道我是否可以将它们读入列表并发送到清单中,以便有人可以检查单独的项目,我想构建一个保存功能并保留某些项目。关于save函数,我想保存保存的检查,是否有对小部件的调用来保存它们的状态?我知道很多,但是谢谢你的帮助

编辑(忘记代码)

导入wx
导入urllib2
从BeautifulSoup导入BeautifulSoup
从BeautifulSoup导入标记
进口稀土
从pyparsing导入makeHTMLTags、originalTextFor、SkipTo、Combine
导入wx
导入wx.html
全局P
siteDict={0:'http://www.reddit.com', 1:'http://www.boston.com', 2:'http://www.stumbleupon.com,3:'news.google.com'}
类别面板(wx.Panel):
定义初始化(自身、父项、id):
wx.Panel.\uuuuu init\uuuuuuuuuuuuux(自我、父、id)
allSites=['Reddit','Boston.com','StumbleUpon','Google News']
StaticText(self,-1,“选择您希望Charlie访问的站点:”,(45,15))
self.sitList=wx.CheckListBox(self,20,(60,50),wx.DefaultSize,allSites)
类下一个按钮(wx.按钮):
定义初始化(自身、父项、id、标签、位置):
wx.Button.\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
班级检查表(wx.Frame):
定义初始化(自我、父项、id、标题):
wx.Frame.\uuuuu init\uuuuuuu(self,parent,id,title,size=(400300))
self.panel=citPanel(self,-1)
下一个按钮(self.panel,30,‘Ok’,(275,50))
self.Bind(wx.EVT_按钮,self.Clicked)
自我中心()
自我展示(真实)
已单击的定义(自身、事件):
checkedItems=[i代表范围内的i(self.panel.sitList.GetCount()),如果self.panel.sitList.IsChecked(i)]
打印支票
r=[siteDict[k]表示checkedItems中的k]
印刷机
对于r中的每个:
pre='页面标题'
职位=“”
site=urlib2.urlopen(每个)
html=site.read()
soup=BeautifulSoup(html)
tags=soup.findAll('a')
soup1=beautifulsou(“”.join(str(t)表示标记中的t))
对于soup1.findAll('a')中的链接:
br=标签(汤“p”)
index=link.parent.contents.index(link)
link.parent.insert(索引+1,br)
P=soup1.美化()
打印P
#对于soup1.findAll('a')中的link2:
#p1=标签(汤,'
frm=MyHtmlFrame(无,“查理”,P)
frm.Show()
类MyHtmlFrame(wx.Frame):
定义初始(自我、家长、标题、页面):
wx.Frame.\uuuuu init\uuuuuuuux(self,parent,-1,title)
html=wx.html.HtmlWindow(self)
如果wx.PlatformInfo中的“gtk2”:
html.SetStandardFonts()
SetPage(第页)
#app=wx.PySimpleApp()
#app.MainLoop()
#event.Skip()
#自我毁灭
app=wx.app()
检查表(无,-1,‘查理’)
app.MainLoop()

您可以创建一个单独的回答面板或框架(从一个单独的框架开始,就像您现在所做的那样-MyHtmlFrame很好)。不要为每个结果创建一个新的面板或框架

在某处创建一个'wx.ComboBox(self,-1,choices=['google','so']),并绑定self.bind(wx.EVT_ComboBox,myHtmlFrame.setFrame)

现在需要编写MyHtmlFrame.setFrame(self,event);使用
choice=event.GetSelection()
,然后使用
self.html.SetPage(self.results\u dict[choice])

哦,在MyHtmlFrame上附加一个字典(
results\u dict
),将选项(
“google”
)映射到结果

除非您希望组合框位于单独的框架中,否则必须学习如何使用wx.Sizers

class MyHtmlFrame(wx.Frame):
    def __init__(self, parent, title, page, results_dict):
        wx.Frame.__init__(self, parent, -1, title)
        self.html = wx.html.HtmlWindow(self)
        if "gtk2" in wx.PlatformInfo:
            self.html.SetStandardFonts()
        self.results_dict=results_dict #here

        self.html.SetPage('')

    def setFrame(self,event):
        self.html.SetPage(self.results_dict[choice])

我真的很抱歉,你回答了这么久,但是,我在月底有很多。我在玩这个,我有几个问题。dict,你是说把它返回的每一个链接都放在字典里,关键是它来自的网站吗?这是唯一能让它们显示在同一个窗口中的方法吗?还有,我是有兴趣将html框架作为复选框的同一框架的一部分,那么它会被初始化为空,并在之后填充吗?我是说,您不需要为每个结果都使用新框架。您可以根据要查看的页面设置一个框架的内容。当然,您可以使用wx.Notebook(或choicebook、listbook或wxTreebook)在多个面板和Firefox选项卡之间进行选择。此外,请查看wx sizers,以便将多个小部件放在同一个框架中。但在尝试另一个之前,先让一个(布局或选项卡)工作。
class MyHtmlFrame(wx.Frame):
    def __init__(self, parent, title, page, results_dict):
        wx.Frame.__init__(self, parent, -1, title)
        self.html = wx.html.HtmlWindow(self)
        if "gtk2" in wx.PlatformInfo:
            self.html.SetStandardFonts()
        self.results_dict=results_dict #here

        self.html.SetPage('')

    def setFrame(self,event):
        self.html.SetPage(self.results_dict[choice])