0

Python で設定ウィンドウを作成しました。ここには、一度だけ設定する必要があるいくつかのパス設定があります。サンプルのデモ コードは次のとおりです。

import wx
import os
class SettingWindow(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)
        panel= wx.Panel(self,-1)
        font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD)
        field1 = wx.TextCtrl(panel,pos=(120,25),size=(170,20))
        vsizer = wx.BoxSizer(wx.VERTICAL)
        field1_sz=wx.BoxSizer(wx.HORIZONTAL)
        field2_sz=wx.BoxSizer(wx.HORIZONTAL)
        field1_lbl=wx.StaticText(panel,-1, label='Repo URL path:', pos=(25, 25))
        field1_lbl.SetFont(font)
        field1_sz.AddSpacer(50)
        field1_sz.Add(field1_lbl)
        field1_sz.AddSpacer(5) # put 5px of space between
        field1_sz.Add(field1)
        field1_sz.AddSpacer(50)

        vsizer.AddSpacer(50)
        vsizer.Add(field1_sz)
        vsizer.AddSpacer(15)
        vsizer.Add(field2_sz)
        vsizer.AddSpacer(50)

        btn1 = wx.Button(panel, label='Browse',pos=(300,25),size=(60,20))
        btn1.Bind(wx.EVT_BUTTON, self.opendir)

    def opendir(self, event):
        dlg = wx.DirDialog(self, "Choose a directory:", style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)
        if dlg.ShowModal() == wx.ID_OK:
            field1.SetValue("%s",dlg.GetPath())

        dlg.Destroy()




class MyApp(wx.App):
    def OnInit(self):
        frame= SettingWindow(None,-1,'Setting Window')
        frame.Show()
        self.SetTopWindow(frame)
        return True
app= MyApp(0)
app.MainLoop()

opendir から取得したパスを textCtrl に表示したいのですが、以下のようなエラーが見つかります。 Traceback (most recent call last): File "D:\PROJECT\SettingWindow.py", line 58, in opendir return (field1 ) NameError: グローバル名 'field1' が定義されていません

4

2 に答える 2

1

このコードは、チェックボックスをクリックしたときにTextCtrlフィールドを非表示にするように機能します

def OnCheckBox(self,event):
    if self.checkbox.Value==False:
        self.field.Enable(True)
    else:
        self.field.Enable(False)
于 2013-03-01T11:23:12.717 に答える