用python写了一个检索人名的小程序,但不知道如何使程序与用wxPython写的GUI相联系,程序如下,望前辈指点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python写了一个检索人名的小程序,但不知道如何使程序与用wxPython写的GUI相联系,程序如下,望前辈指点相关的知识,希望对你有一定的参考价值。

以下是一个可以单独运行的主程序代码,其中name_data是一个含有dictionaries的py文件,其中types,group,age是分别以字母,数字和年代为key,若干人名为value的dictionary:
from name_data import *
while True:
taps = raw_input('Inter the taps :')
for i in taps.split():
for a in types.keys():
if i == a:
r1 = types[a]
for b in group.keys():
if i == b:
r2 = group[b]
for c in age.keys():
if i == c:
r3 = age[c]
if len(taps.split()) == 3:
z = list(set(r1)& set(r2)& set(r3))
print z

另外GUI代码如下:
import wx
class RadioBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'search', size=(600, 300))
panel = wx.Panel(self, -1)
types = ['a', 'b', 'c', 'd', 'e', 'f']
group = ['1', '2', '3', '4', '5', '6']
age =['2000', '1990', '1980', '1970']
wx.RadioBox(panel, -1, "types", (10, 10), wx.DefaultSize,
types, 2, wx.RA_SPECIFY_COLS)
wx.RadioBox(panel, -1, "group", (200, 10), wx.DefaultSize,
group, 2, wx.RA_SPECIFY_COLS)
wx.RadioBox(panel, -1, "age", (380, 10), wx.DefaultSize,
age, 2, wx.RA_SPECIFY_COLS)
searchButton = wx.Button(panel, label='Search', pos=(10, 150))
results = wx.TextCtrl(panel, pos=(10, 180), size=(300, 60), style=wx.TE_MULTILINE | wx.HSCROLL)
if __name__ == '__main__':
app = wx.PySimpleApp()
RadioBoxFrame().Show()
app.MainLoop()
现在的问题是怎样在这个GUI界面上实现之前的主程序,也就是当我在这三个radiobox单选框中进行选择后,再点searchbutton,在下面的textctrl中能显示出三个radiobox并集中的人名。我试过bind(),也查了不少资料,但都过于泛泛,我是个编程新手,这是我学的第一个语言,在这里卡了好几天都过不去,诚心希望有前辈能指点一二,最好能说得详细具体一些
虽然不多但这是我所有的悬赏分了,万分感谢!另外,我想主程序应该是需要进行一些改动,然后重新封装进一个函数里,然后再从gui调用,但不知具体怎样操作。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx

class MyFrame3(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame3.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.sizer_7_staticbox = wx.StaticBox(self, -1, _(u"显示区"))
self.sizer_6_staticbox = wx.StaticBox(self, -1, _(u"功能区"))
self.radio_box_1 = wx.RadioBox(self, -1, _("radio_box_1"), choices=[_("choice 1"), _("choice 2"), _("choice 3")], majorDimension=0, style=wx.RA_SPECIFY_ROWS)
self.button_1 = wx.Button(self, -1, _("button_1"))
self.text_ctrl_1 = wx.TextCtrl(self, -1, "", style=wx.TE_RICH2)

self.__set_properties()
self.__do_layout()

self.Bind(wx.EVT_BUTTON, self.clickButton, self.button_1)
# end wxGlade

def __set_properties(self):
# begin wxGlade: MyFrame3.__set_properties
self.SetTitle(_("frame_4"))
self.SetSize((400, 300))
self.radio_box_1.SetMinSize((210, 90))
self.radio_box_1.SetSelection(0)
self.button_1.SetMinSize((170, 90))
self.text_ctrl_1.SetMinSize((390, 99))
# end wxGlade

def __do_layout(self):
# begin wxGlade: MyFrame3.__do_layout
sizer_4 = wx.BoxSizer(wx.VERTICAL)
sizer_5 = wx.BoxSizer(wx.VERTICAL)
sizer_7 = wx.StaticBoxSizer(self.sizer_7_staticbox, wx.VERTICAL)
sizer_6 = wx.StaticBoxSizer(self.sizer_6_staticbox, wx.VERTICAL)
sizer_8 = wx.BoxSizer(wx.HORIZONTAL)
sizer_8.Add(self.radio_box_1, 0, wx.ALIGN_CENTER_VERTICAL, 0)
sizer_8.Add(self.button_1, 0, wx.ALIGN_CENTER_VERTICAL, 0)
sizer_6.Add(sizer_8, 1, wx.EXPAND, 0)
sizer_5.Add(sizer_6, 1, wx.EXPAND, 0)
sizer_7.Add(self.text_ctrl_1, 0, 0, 0)
sizer_5.Add(sizer_7, 1, wx.EXPAND, 0)
sizer_4.Add(sizer_5, 1, wx.EXPAND, 0)
self.SetSizer(sizer_4)
self.Layout()
# end wxGlade

def clickButton(self, event):
print "Event handler `clickButton' not implemented!"
event.Skip()

# end of class MyFrame3

if __name__ == "__main__":
import gettext
gettext.install("app") # replace with the appropriate catalog name

app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_4 = MyFrame3(None, -1, "")
app.SetTopWindow(frame_4)
frame_4.Show()
app.MainLoop()
按照你的要求做了个界面,调用clickButton函数处理你的逻辑,然后调用textbox的setvalue方法将你的结果写到文本框中
你觉得界面不合理的话,你可以自己调用layout和properties两个参数是界面参数追问

哥们你写了很多 但我看不太懂 另外按你的代码生成的程序用不起来,可能需要我再去调一些东西, 但我只是个初学者,摸不着门路,能否写一个能直接完成我所需任务的界面,谢谢! 不好意思最近搬家一直忙得没空看问题,回晚了。

参考技术A 个人觉得 gui程序应该不是这样 用控制台程序与gui组合起来的吧
比如你的搜索,输出地信息是用地print函数,这是打印输出至屏幕吧
应该有类似的控件在wx中用来显示信息吧,不是太懂,同样学习

下面是一个 wxpython的学习资料 中文的追问

哥们你给的网站不错,挺适合有点基础又想继续深入的同学,谢谢!

参考资料:http://www.czug.org/python/wxpythoninaction/

以上是关于用python写了一个检索人名的小程序,但不知道如何使程序与用wxPython写的GUI相联系,程序如下,望前辈指点的主要内容,如果未能解决你的问题,请参考以下文章

我在记事本里写了个嵌入JavaScript的小程序,不知道怎么运行?谢谢。。

用cefsharp写了一个保存网页为单文件html的小工具

如何用python做一个在windows关机时弹出一句消息提示的小程序?

用python帮别人写了个文字识别程序

如何用python实现六边蜂窝型坐标?

聊聊程序员如何学习英语单词:写了一个记单词的小程序