Tags:
Forums: 

รัน code ด้านล่างนี้ดูหน่อยนะครับ
ผมอยากรู้ว่ามันไดตาม รูปใน link นี้ หรือไม่
http://www.zetcode.com/wxpython/images/find_replace.png

ผมรันดูแล้ว มันไม่ได้

แล้วจะทำอย่างไร จึงจะได้ครับ แก้ตรงไหนครับ

!/usr/bin/python

Find/Replace Dialog

import wx

class FindReplace(wx.Dialog):
def init(self, parent, id, title):
wx.Dialog.init(self, parent, id, title, size=(255, 365))

    vbox_top = wx.BoxSizer(wx.VERTICAL)
    panel = wx.Panel(self, -1)

    vbox = wx.BoxSizer(wx.VERTICAL)

    # panel1

    panel1 = wx.Panel(panel, -1)
    grid1 = wx.GridSizer(2, 2)
    grid1.Add(wx.StaticText(panel1, -1, 'Find: ', (5, 5)), 0,  wx.ALIGN_CENTER_VERTICAL)
    grid1.Add(wx.ComboBox(panel1, -1, size=(120, -1)))
    grid1.Add(wx.StaticText(panel1, -1, 'Replace with: ', (5, 5)), 0, wx.ALIGN_CENTER_VERTICAL)
    grid1.Add(wx.ComboBox(panel1, -1, size=(120, -1)))

    panel1.SetSizer(grid1)
    vbox.Add(panel1, 0, wx.BOTTOM | wx.TOP, 9)

    # panel2

    panel2 = wx.Panel(panel, -1)
    hbox2 = wx.BoxSizer(wx.HORIZONTAL)

    sizer21 = wx.StaticBoxSizer(wx.StaticBox(panel2, -1, 'Direction'), orient=wx.VERTICAL)
    sizer21.Add(wx.RadioButton(panel2, -1, 'Forward', style=wx.RB_GROUP))
    sizer21.Add(wx.RadioButton(panel2, -1, 'Backward'))
    hbox2.Add(sizer21, 1, wx.RIGHT, 5)

    sizer22 = wx.StaticBoxSizer(wx.StaticBox(panel2, -1, 'Scope'), orient=wx.VERTICAL)
    # we must define wx.RB_GROUP style, otherwise all 4 RadioButtons would be mutually exclusive
    sizer22.Add(wx.RadioButton(panel2, -1, 'All', style=wx.RB_GROUP))
    sizer22.Add(wx.RadioButton(panel2, -1, 'Selected Lines'))
    hbox2.Add(sizer22, 1)

    panel2.SetSizer(hbox2)
    vbox.Add(panel2, 0, wx.BOTTOM, 9)

    # panel3

    panel3 = wx.Panel(panel, -1)
    sizer3 = wx.StaticBoxSizer(wx.StaticBox(panel3, -1, 'Options'), orient=wx.VERTICAL)
    vbox3 = wx.BoxSizer(wx.VERTICAL)
    grid = wx.GridSizer(3, 2, 0, 5)
    grid.Add(wx.CheckBox(panel3, -1, 'Case Sensitive'))
    grid.Add(wx.CheckBox(panel3, -1, 'Wrap Search'))
    grid.Add(wx.CheckBox(panel3, -1, 'Whole Word'))
    grid.Add(wx.CheckBox(panel3, -1, 'Incremental'))
    vbox3.Add(grid)
    vbox3.Add(wx.CheckBox(panel3, -1, 'Regular expressions'))
    sizer3.Add(vbox3, 0, wx.TOP, 4)

    panel3.SetSizer(sizer3)
    vbox.Add(panel3, 0, wx.BOTTOM, 15)

    # panel4

    panel4 = wx.Panel(panel, -1)
    sizer4 = wx.GridSizer(2, 2, 2, 2)
    sizer4.Add(wx.Button(panel4, -1, 'Find', size=(120, -1)))
    sizer4.Add(wx.Button(panel4, -1, 'Replace/Find', size=(120, -1)))
    sizer4.Add(wx.Button(panel4, -1, 'Replace', size=(120, -1)))
    sizer4.Add(wx.Button(panel4, -1, 'Replace All', size=(120, -1)))

    panel4.SetSizer(sizer4)
    vbox.Add(panel4, 0, wx.BOTTOM, 9)

    # panel5

    panel5 = wx.Panel(panel, -1)
    sizer5 = wx.BoxSizer(wx.HORIZONTAL)
    sizer5.Add((191, -1), 1, wx.EXPAND | wx.ALIGN_RIGHT)
    sizer5.Add(wx.Button(panel5, -1, 'Close', size=(50, -1)))

    panel5.SetSizer(sizer5)
    vbox.Add(panel5, 1, wx.BOTTOM, 9)

    vbox_top.Add(vbox, 1, wx.LEFT, 5)
    panel.SetSizer(vbox_top)

    self.Centre()
    self.ShowModal()
    self.Destroy()

app = wx.App()
FindReplace(None, -1, 'Find/Replace')
app.MainLoop()

Get latest news from Blognone
By: willwill
ContributorAndroid
on 16 January 2009 - 18:42 #81222
willwill's picture

รบกวนใส่โค๊ดใน <code language="python">...</code> ด้วยครับ

By: khao_lek on 16 January 2009 - 18:47 #81223

จารบกวนทำไม ทำเองได้ความรู้เอง ไม่เข้าใจค่อยถามไม่ดีกว่าหรือครับ ????

By: kowito2
Android
on 16 January 2009 - 19:23 #81227 Reply to:81223

+1

By: iknowpython on 16 January 2009 - 21:38 #81244

รูปภาพครับ
http://www.zetcode.com/wxpython/images/find_replace.png

code ตามนี้ครับผม

!/usr/bin/python

Find/Replace Dialog

import wx

class FindReplace(wx.Dialog):
def init(self, parent, id, title):
wx.Dialog.init(self, parent, id, title, size=(255, 365))

    vbox_top = wx.BoxSizer(wx.VERTICAL)
    panel = wx.Panel(self, -1)

    vbox = wx.BoxSizer(wx.VERTICAL)

    # panel1

    panel1 = wx.Panel(panel, -1)
    grid1 = wx.GridSizer(2, 2)
    grid1.Add(wx.StaticText(panel1, -1, 'Find: ', (5, 5)), 0,  wx.ALIGN_CENTER_VERTICAL)
    grid1.Add(wx.ComboBox(panel1, -1, size=(120, -1)))
    grid1.Add(wx.StaticText(panel1, -1, 'Replace with: ', (5, 5)), 0, wx.ALIGN_CENTER_VERTICAL)
    grid1.Add(wx.ComboBox(panel1, -1, size=(120, -1)))

    panel1.SetSizer(grid1)
    vbox.Add(panel1, 0, wx.BOTTOM | wx.TOP, 9)

    # panel2

    panel2 = wx.Panel(panel, -1)
    hbox2 = wx.BoxSizer(wx.HORIZONTAL)

    sizer21 = wx.StaticBoxSizer(wx.StaticBox(panel2, -1, 'Direction'), orient=wx.VERTICAL)
    sizer21.Add(wx.RadioButton(panel2, -1, 'Forward', style=wx.RB_GROUP))
    sizer21.Add(wx.RadioButton(panel2, -1, 'Backward'))
    hbox2.Add(sizer21, 1, wx.RIGHT, 5)

    sizer22 = wx.StaticBoxSizer(wx.StaticBox(panel2, -1, 'Scope'), orient=wx.VERTICAL)
    # we must define wx.RB_GROUP style, otherwise all 4 RadioButtons would be mutually exclusive
    sizer22.Add(wx.RadioButton(panel2, -1, 'All', style=wx.RB_GROUP))
    sizer22.Add(wx.RadioButton(panel2, -1, 'Selected Lines'))
    hbox2.Add(sizer22, 1)

    panel2.SetSizer(hbox2)
    vbox.Add(panel2, 0, wx.BOTTOM, 9)

    # panel3

    panel3 = wx.Panel(panel, -1)
    sizer3 = wx.StaticBoxSizer(wx.StaticBox(panel3, -1, 'Options'), orient=wx.VERTICAL)
    vbox3 = wx.BoxSizer(wx.VERTICAL)
    grid = wx.GridSizer(3, 2, 0, 5)
    grid.Add(wx.CheckBox(panel3, -1, 'Case Sensitive'))
    grid.Add(wx.CheckBox(panel3, -1, 'Wrap Search'))
    grid.Add(wx.CheckBox(panel3, -1, 'Whole Word'))
    grid.Add(wx.CheckBox(panel3, -1, 'Incremental'))
    vbox3.Add(grid)
    vbox3.Add(wx.CheckBox(panel3, -1, 'Regular expressions'))
    sizer3.Add(vbox3, 0, wx.TOP, 4)

    panel3.SetSizer(sizer3)
    vbox.Add(panel3, 0, wx.BOTTOM, 15)

    # panel4

    panel4 = wx.Panel(panel, -1)
    sizer4 = wx.GridSizer(2, 2, 2, 2)
    sizer4.Add(wx.Button(panel4, -1, 'Find', size=(120, -1)))
    sizer4.Add(wx.Button(panel4, -1, 'Replace/Find', size=(120, -1)))
    sizer4.Add(wx.Button(panel4, -1, 'Replace', size=(120, -1)))
    sizer4.Add(wx.Button(panel4, -1, 'Replace All', size=(120, -1)))

    panel4.SetSizer(sizer4)
    vbox.Add(panel4, 0, wx.BOTTOM, 9)

    # panel5

    panel5 = wx.Panel(panel, -1)
    sizer5 = wx.BoxSizer(wx.HORIZONTAL)
    sizer5.Add((191, -1), 1, wx.EXPAND | wx.ALIGN_RIGHT)
    sizer5.Add(wx.Button(panel5, -1, 'Close', size=(50, -1)))

    panel5.SetSizer(sizer5)
    vbox.Add(panel5, 1, wx.BOTTOM, 9)

    vbox_top.Add(vbox, 1, wx.LEFT, 5)
    panel.SetSizer(vbox_top)

    self.Centre()
    self.ShowModal()
    self.Destroy()

app = wx.App()
FindReplace(None, -1, 'Find/Replace')
app.MainLoop()

By: GiggsWalk
AndroidUbuntu
on 16 January 2009 - 22:28 #81255

ข้ามห้องจาก Ruby มางงด้วยคน
รันดูแล้วไม่ได้ ก็น่าจะเอา error มาถามมากกว่านะ

By: bow_der_kleine
WriterAndroidUbuntu
on 17 January 2009 - 06:56 #81278
bow_der_kleine's picture

ผมรันได้ครับ

BioLawCom.De

By: sugree
FounderWriterAndroidBlackberry
on 17 January 2009 - 09:30 #81286

แทนที่จะถามว่ารันได้หรือเปล่า ผมว่าเอาปัญหาที่เจอมาถามดีกว่า

By: bow_der_kleine
WriterAndroidUbuntu
on 17 January 2009 - 18:50 #81327 Reply to:81286
bow_der_kleine's picture

นั่นสิครับ ผมก็ตอบไปตามที่เขาถาม ก็ยังสงสัยอยู่ว่า จขกท จะได้ประโยชน์อะไรหากรู้ว่าผมรันได้

BioLawCom.De

By: iknowpython on 18 January 2009 - 09:00 #81386

อย่างไรก็แล้วแต่ ต้องขอโทษในเบื้องต้นก่อนนะครับ

ผมรันดูแล้วนะครับ มันไม่ได้ตามรูปภาพครับ
ในเบื้องต้นก็เลยอยากถามว่า ท่านอื่นๆ จะได้ตามรูปหรือไม่
เพราะ code นี้ เป็น code ที่สอนในเว็บ
มีรูปให้เรียบร้อย แต่ผมนั้น รันไม่ได้ตามรูปนั้น
ก็เลยอยากทราบจากท่านอื่นๆ ก่อนว่า มีใครได้ตามรูปหรือไม่ครับ

ตามที่รันนั้น ดูเหมือนว่า พอรันดูแล้วสิ่งที่แสดงออกมา มันจะทับกันในตำแหน่งเดิมหมดเลย
แต่เนื่องจากว่า มือใหม่ ก็เลยหาจุดที่จะแก้ไข ยังไม่เจอ
มันเป็นเรื่องเกี่ยวกับ Layout ซึ่งผมคิดว่ามันยากอยู่เหมือนกัน

Error คงจะไม่มีครับ เพราะ สิ่งที่แสดงออกมามันจะทันกันหมด
ผมคิดว่าอย่างนั้นนะครับผม

ใครทำให้มันเป็นตามรูปได้ ก็ช่วยชี้แนะหน่อยนะครับผม

ขอบคุณล่วงหน้านะครับ

By: risc on 19 January 2009 - 13:20 #81506

เอารุปที่ไม่เหมือนให้พี่เขาดูผมว่าน่าจะช่วยได้นะครับ ถ้าเป็นเกี่ยวกับ layout จะได้รู้ว่าทำไมผิด เขียนบน ubuntu ใช่ีมั้ยครับ

แสวงหามิใช่เพราะรอคอย เชี่ยวชาญมิใช่เพราะโอกาส ชำนาญมิใช่เพราะโชคช่วย"ดังนี้แล้วลิขิตฟ้าหรือจะสู้มานะตน"chonlatee

By: iknowpython on 20 January 2009 - 09:16 #81601

บน Windows ครับ

ผลแก้ไขตามนี้นะครับ

panel1 = wx.Panel(panel, -1)
เป็น
panel1 = wx.Panel(self, -1)

panel2 = wx.Panel(panel, -1)
เป็น
panel2 = wx.Panel(self, -1)

panel3 = wx.Panel(panel, -1)
เป็น
panel3 = wx.Panel(self, -1)

panel4 = wx.Panel(panel, -1)
เป็น
panel4 = wx.Panel(self, -1)

panel5 = wx.Panel(panel, -1)
เป็น
panel5 = wx.Panel(self, -1)

มันได้นะครับ
แต่ว่า Layout มันจะไม่สวยงาม
คงมีปัญหากับการใช้ Panel กับ Sizer ต่างๆ ที่ไม่ถูกต้องอยู่

By: hereblur on 25 January 2010 - 14:15 #151515

บน windows ลองเปลี่ยน

panel.SetSizer(vbox_top)

เป็น

panel.SetSizer(vbox_top)
panel.Fit()

หรือ

panel.SetSizerAndFit(vbox_top)