2016-09-09 6 views
0

ユーザーインターフェイス上で作業し、一部のテキスト入力に既定の情報があらかじめ入力されています。下のスクリーンキャプチャで見られるように、私が設定したテキストは、TextCtrlの左端の後ろにハイライト表示され、隠されています。これをどうすれば解決できますか?wxPython TextCtrlで設定したテキストが左にスライドして強調表示されているのはなぜですか?

スクリーンキャップ:

窓枠は、Windows上でピントが合っているときにテキストが強調表示されています。私がそれを切ったときではなかった。 fulleテキストは "の/ var/libに/ CMT/tomcatに/ CDES" である

Image

(画像サイズのため申し訳ありませんが、私はSOFのポストインタフェースでサイズを変更する方法がわからない)

直接のrelaventコード:

DirPath_O_Text = wx.StaticText(panel,label='Remote Directory Path', style=wx.ALIGN_RIGHT) 
    self.DirPath_O_TC = wx.TextCtrl(panel) 
    self.DirPath_O_TC.ChangeValue("/var/lib/cmt/tomcat/CDES") 

    hbox1.Add(DirPath_O_Text, proportion=1,flag=wx.EXPAND|wx.BOTTOM,border=10) 
    hbox1.Add((25,-1)) 
    hbox1.Add(self.DirPath_O_TC, proportion=1,) 
    hbox1.Add((25,-1)) 

全コード:

import wx 

class Popup(wx.Frame): 

    def __init__(self, *args, **kwargs): #initializing 
     super(Popup, self).__init__(*args, **kwargs) 

     self.SetMinSize((500,400)) #change this to change the minimum size of the total frame 
     self.Centre() 
     self.InitUI() 
     self.Show() 


    def InitUI(self): #building the UI 

     panel = wx.Panel(self) #main panel that holds everything 

     #setting font 
     font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT) 
     font.SetPointSize(16) #this is the size for the title, its smaller later on 

     #setting panel colour 
     # background_Colour = '#BCD7E0' 
     # panel.SetBackgroundColour(background_Colour) 

     ###########################  
     #vbox = sizer holds the whole thing 
     # Title = label 
     # hbox1 = sizer 
     #  Remote Directory Label 
     #  Remote Directory TextCtrl 
     # hbox2 = sizer 
     #  Local Directory Label 
     #  Local Directory TextCtrl 
     # hbox3 = sizer 
     #  Hostname Label 
     #  Hostname TextCtrl 
     # hbox4 = sizer 
     #  Username Label 
     #  Username TextCtrl 
     # hbox5 = sizer 
     #  Password Label 
     #  Password TextCtrl 
     # vbox2 = just used to align the hbox6 to center 
     #  hbox6 = sizer that holds the bottom two buttons 
     #  ok button = sends all info to next program 
     #  Cancel button = closes current program 

     ############### 
     #start 
     vbox = wx.BoxSizer(wx.VERTICAL) #oriented verticaly 

     ######### 
     #title  
     st_title = wx.StaticText(panel,label='CMT-CDES XML Messaging Tool', style=wx.ALIGN_CENTRE) 
     st_title.SetFont(font) 
     font.SetPointSize(9) #changes font back to small for all other text besides title 

     vbox.Add(st_title, proportion=1,flag=wx.EXPAND|wx.ALL, border=10) #adds the title 
     ###### 

     ######## 
     #6 sizers. 1-5 are for the inputs, 6 is for buttons on bottom 
     hbox1 = wx.BoxSizer(wx.HORIZONTAL) 
     hbox2 = wx.BoxSizer(wx.HORIZONTAL) 
     hbox3 = wx.BoxSizer(wx.HORIZONTAL) 
     hbox4 = wx.BoxSizer(wx.HORIZONTAL) 
     hbox5 = wx.BoxSizer(wx.HORIZONTAL) 
     hbox6 = wx.BoxSizer(wx.HORIZONTAL) 
     ######## 


     ######## 
     #set labels and TC for each hbox 

     #hbox1 
     DirPath_O_Text = wx.StaticText(panel,label='Remote Directory Path', style=wx.ALIGN_RIGHT) 
     self.DirPath_O_TC = wx.TextCtrl(panel) 
     self.DirPath_O_TC.ChangeValue("/var/lib/cmt/tomcat/CDES") 

     hbox1.Add(DirPath_O_Text, proportion=1,flag=wx.EXPAND|wx.BOTTOM,border=10) 
     hbox1.Add((25,-1)) 
     hbox1.Add(self.DirPath_O_TC, proportion=1,) 
     hbox1.Add((25,-1)) 

     #hbox2 
     DirPath_L_Text = wx.StaticText(panel,label='Local Directory Path', style=wx.ALIGN_RIGHT) 
     self.DirPath_L_TC = wx.TextCtrl(panel) 

     hbox2.Add(DirPath_L_Text, proportion=1,flag=wx.EXPAND|wx.BOTTOM,border=10) 
     hbox2.Add((25,-1)) 
     hbox2.Add(self.DirPath_L_TC, proportion=1,) 
     hbox2.Add((25,-1)) 

     #hbox3 
     Host_Text = wx.StaticText(panel,label='Hostname\IP', style=wx.ALIGN_RIGHT) 
     self.Host_TC = wx.TextCtrl(panel) 

     hbox3.Add(Host_Text, proportion=1,flag=wx.EXPAND|wx.BOTTOM,border=10) 
     hbox3.Add((25,-1)) 
     hbox3.Add(self.Host_TC, proportion=1) 
     hbox3.Add((25,-1)) 

     #hbox4 
     User_Text = wx.StaticText(panel,label='Username', style=wx.ALIGN_RIGHT) 
     self.User_TC = wx.TextCtrl(panel) 

     hbox4.Add(User_Text, proportion=1,flag=wx.EXPAND|wx.BOTTOM,border=10) 
     hbox4.Add((25,-1)) 
     hbox4.Add(self.User_TC, proportion=1) 
     hbox4.Add((25,-1)) 

     #hbox5 
     Pass_Text = wx.StaticText(panel,label='Password', style=wx.ALIGN_RIGHT) 
     self.Pass_TC = wx.TextCtrl(panel, style=wx.TE_PASSWORD) 

     hbox5.Add(Pass_Text, proportion=1,flag=wx.EXPAND|wx.BOTTOM,border=10) 
     hbox5.Add((25,-1)) 
     hbox5.Add(self.Pass_TC, proportion=1) 
     hbox5.Add((25,-1)) 
     ######## 

     ######## 
     #buttons 
     btn_size = (90, 30) 
     btn_OK = wx.Button(panel, label='OK', size=btn_size) 
     btn_Cancel = wx.Button(panel, label='Cancel', size=btn_size) 

     #bindings 
     btn_OK.Bind(wx.EVT_BUTTON, self.OK) #binds to ok (just takes variables from all text boxes, and passes to program) 
     btn_Cancel.Bind(wx.EVT_BUTTON, self.Cancel) #binds to cancel (just closes the window) 

     #holds buttons 
     hbox6.Add(btn_OK) 
     hbox6.Add((25,-1)) #spacer between buttons 
     hbox6.Add(btn_Cancel, flag=wx.ALIGN_RIGHT,proportion=0) 

     #aligns hbox 
     vbox2 = wx.BoxSizer(wx.VERTICAL) #added this vbox to set the alignment to center 
     vbox2.Add(hbox6, flag=wx.ALIGN_CENTRE, proportion = 0) 
     ####### 

     ############ 
     #add everything to main vbox 
     vbox.Add(hbox1,proportion=1,flag=wx.BOTTOM|wx.EXPAND, border=10) 
     vbox.Add(hbox2,proportion=1,flag=wx.BOTTOM|wx.EXPAND, border=10) 
     vbox.Add(hbox3,proportion=1,flag=wx.BOTTOM|wx.EXPAND, border=10) 
     vbox.Add(hbox4,proportion=1,flag=wx.BOTTOM|wx.EXPAND, border=10) 
     vbox.Add(hbox5,proportion=1,flag=wx.BOTTOM|wx.EXPAND, border=10) 

     #buttons vbox 
     vbox.Add(vbox2,proportion=1,flag=wx.BOTTOM|wx.EXPAND, border=10) 
     ############ 

     #add main vbox to panel 
     panel.SetSizer(vbox) 

    def OK(self, e): 
     #creates a 5 item list, [DirPath_O, DirPath_L, Host, User, Pass] 
     args = [str(self.DirPath_O_TC.GetValue()) , str(self.DirPath_L_TC.GetValue()),str(self.Host_TC.GetValue()), str(self.User_TC.GetValue()), str(self.Pass_TC.GetValue())] 

     #print "args[1:5]: ", args 

     '''TODO 
     ''' 
     #call main, pass it args 
     #self.Close() #closes window when done 
     ''' 
     ''' 

     #TODO: Test if values are correct 

     print #not needed, just extra 

    def Cancel(self, e): #closes window 
     self.Close() 



#this is the main loop 
ex = wx.App() 
Popup(None) 
ex.MainLoop() 

答えて

0

私は、テキストがデフォルトで左揃えになっていると思います。右揃えにしたい場合は、テキストコントロールのSetWindowStyleメソッドとwx.TE_RIGHTフラグを使用することができます。

最初のテキストコントロールがテキストを強調表示する理由は、最初のテキストコントロールがフォーカスを受け入れることができる最初のウィジェットであることです。フォーカスを取得し、テキストを含むため、テキストが自動的に強調表示されます。

+0

左揃えは問題ありませんが、私が心配するのは、テキストの半分が左端で切り取られているということです。そのプログラムは、TextCtrlの開始位置が表示されている場所のどこかにあると考えているかのように見えます。 –

+0

'SetInsertionPoint(0)'を呼び出してみてください –

+0

私はTextCtrlでその呼び出しを試みましたが、残念なことに違いはありませんでした。 –

関連する問題