У меня проблема с wx.TextCtrl.Я просто хочу установить размер блока управления, но я хочу сделать это динамически.И это не работает по любой причине.
Здесь у меня есть мой исходный код.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
class Test(wx.Frame):
def __init__(self, parent):
super().__init__(parent)
# Panel
self.panel = wx.Panel(self)
# Boxes
self.numbers = wx.StaticBox(self.panel, wx.ID_ANY, "Numbers")
# Elements
self.stN1 = wx.StaticText(self.numbers, wx.ID_ANY, "Number 1:")
self.tcN1 = wx.TextCtrl(self.numbers, wx.ID_ANY, style=wx.TE_CENTER)
self.tcN1.SetSize(wx.Size(36, 20))
self.stN2 = wx.StaticText(self.numbers, wx.ID_ANY, "Number 2:")
self.tcN2 = wx.TextCtrl(self.numbers, wx.ID_ANY, size=wx.Size(36, 20), style=wx.TE_CENTER)
# Sizers
self.szTop = wx.BoxSizer(wx.VERTICAL)
self.szNumbers = wx.StaticBoxSizer(self.numbers, wx.VERTICAL)
self.szN1 = wx.BoxSizer(wx.HORIZONTAL)
self.szN2 = wx.BoxSizer(wx.HORIZONTAL)
self.szN1.Add(self.stN1, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
self.szN1.Add(self.tcN1, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
self.szN2.Add(self.stN2, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
self.szN2.Add(self.tcN2, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
self.szNumbers.Add(self.szN1)
self.szNumbers.Add(self.szN2)
self.szTop.Add(self.szNumbers, 0, wx.ALL, 5)
self.panel.SetSizerAndFit(self.szTop)
self.Fit()
self.Show()
if __name__ == "__main__":
app = wx.App()
Test(None)
app.MainLoop()
Этот код даст мне следующий результат:
Итак, как вы видите, размер был задан правильно в TextCtrl2, когда я установил его в определении элемента управления.Но у меня есть много таких элементов управления, поэтому я хочу установить размер динамически в методе "SetSizeOfTextControl (textControl)".(Потому что, если я решу использовать другой размер позже, мне нужно изменить только 1 строку в этом методе, а не 20 строк во всех определениях.)
Поэтому я попытался использовать данный метод wx.TextCtrl.SetSize (), как вы видите в моем TextCtrl1.Но это не работает.Ну, это так, но только до тех пор, пока я не вызову SetSizersAndFit ().В этот момент размер снова возвращается к значению по умолчанию.
Как правильно это сделать?Как динамически изменить размер wx.TextCtrl при использовании классификаторов?:)
Большое спасибо!