簡體   English   中英

如何使wx.TextCtrl內容未默認選中?

[英]How to make wx.TextCtrl content NOT selected by default?

這是我的問題:

在此處輸入圖片說明

self.textCtrl1 = wx.TextCtrl(id=wx.ID_ANY, name='textCtrl1',
              parent=self, pos=wx.Point(0, 100), size=wx.Size(400, 100),
              style=wx.VSCROLL | wx.TE_MULTILINE, value='')
self.textCtrl1.SetValue("I don't want this line to be selected by default!\n")

正如你所看到的,每個對話開始時,在內容wx.TextCtrl總是被默認選擇,甚至當我SetInsertionPoint最后一個字符。 這確實很煩人,因為您鍵入的任何內容都會默認刪除以前選擇的內容,而且我找不到將光標設置到初始文本末尾的方法。 那么如何解決這個問題呢?

PS:我正在使用wxPython 2.8.12.1,python 2.7.3贏取7 64位

奇怪的是您的textCtrl文本會自動被選中。 在正常情況下,光標只會指向框的開始。

嘗試以下方法之一:

self.textCtrl.SetValue("I don't want this line to be selected by default!\n")
self.textCtrl.SetInsertionPoint(self.textCtrl.GetLastPosition())

而不是使用SetValue ,請使用:

print >> self.textCtrl, "I don't want this line to be selected by default!"

我有同樣的問題。 我發現運行frame.Show()方法后必須設置textctrl的值。

我已經閱讀了wxWidgets論壇上的一些帖子,似乎在Windows的wxWidgets 2.8x中,默認情況下自動選擇了多行文本,沒有很好的方法將其取消選擇。 據說這是默認行為,因為它反映了Windows API的默認行為,盡管我不確定為什么他們會有一個名為SetSelection()的函數,但該函數實際上並未設置選擇。 wxWidgets張貼者建議使用wxRichTextCtrl,因為不會自動選擇。

他們還討論了在wxWidgets的未來實現中默認取消選擇多行文本控件的問題,他們還提到在OsX下默認行為是:單行-全部自動選擇,多行-選擇沒有。

因此,您所看到的與其他人看到的差異可能是由於操作系統不同,甚至是wxWidgets版本不同所致。 可以說,我也有這個問題,但找不到最佳的解決方法。

但是,如果您不介意多行文本控件處理選項卡,而不是用於GUI導航的選項卡,請使用屬性wxWANTS_CHARS,選擇問題將消失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM