में कॉलम चौड़ाई उपलब्ध स्थान ले जाएं मेरे पास मेरे wx.ListCtrl(size=(-1,200))
में तीन कॉलम हैं। मैं स्तंभों को इसके निर्माण के बाद ListCtrl की चौड़ाई भरना चाहता हूं। आदर्श रूप से, पहला कॉलम अतिरिक्त स्थान को भरने के लिए विस्तारित हो सकता है। दूसरे और तीसरे कॉलम को विस्तार करने की आवश्यकता नहीं है, और अधिमानतः चौड़ाई (ओसीडी स्वरूपण) में नहीं बदलेगा।WxPython ListCtrl
वर्तमान में, प्रत्येक ListCtrl कॉलम (width=-1)
का उपयोग करके स्थापित किया गया है।
मुझे लगता है मैं अपने लाभ के लिए कोड के इस भाग का उपयोग कर सकते है ...
# Expand first column to fit longest entry item
list_ctrl.SetColumnWidth(0, wx.LIST_AUTOSIZE)
छद्म कोड (शायद):
# After wx.ListCtrl creation
Get width of ListCtrl control
Get width of each ListCtrl column
Calculate unused width of ListCtrl
Set first column width to original width + unused width
जोड़ा गया:
को देखते हुए निम्नलिखित उदाहरण, मुझे समझ में नहीं आता कि autowidthmixin कैसे शुरू करें। वर्तमान में, मैं सूची को एक फ़ोल्ड पैनेल के अंदर रखने की कोशिश कर रहा हूं। Foldpanel एक वर्ग है और कक्षा के भीतर एक समारोह listctrl बनाता है। मुझे विश्वास भी नहीं है कि इस समय मेरे कोड की संरचना को दिया जा सकता है!
class MyPanel(wx.Panel):
def __init__(self, parent, dictionary):
self.dictionary = dictionary
"""Constructor"""
wx.Panel.__init__(self, parent)
# Layout helpers (sizers) and content creation (setPanel)
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(self.mainSizer)
list_ctrl = self.setPanel()
self.mainSizer.Add(list_ctrl, 0, wx.ALL | wx.EXPAND, 5)
self.GetSizer().SetSizeHints(self)
def setPanel(self):
index = 0
list_ctrl = wx.ListCtrl(self, size=(-1, 200),
style=wx.LC_REPORT | wx.BORDER_SUNKEN)
list_ctrl.InsertColumn(0, "Variable", format=wx.LIST_FORMAT_LEFT, width=-1)
list_ctrl.InsertColumn(1, "x", format=wx.LIST_FORMAT_RIGHT, width=-1)
list_ctrl.InsertColumn(2, u"\u03D0", format=wx.LIST_FORMAT_RIGHT, width=-1)
for key, value in self.dictionary.iteritems():
list_ctrl.InsertStringItem(index, str(key))
list_ctrl.SetStringItem(index, 1, ("%.2f" % value[0]))
list_ctrl.SetStringItem(index, 2, ("%.8f" % value[1]))
index += 1
list_ctrl.SetColumnWidth(0, wx.LIST_AUTOSIZE)
list_ctrl.SetColumnWidth(1, wx.LIST_AUTOSIZE)
list_ctrl.SetColumnWidth(2, wx.LIST_AUTOSIZE)
return list_ctrl
कुछ अतिरिक्त जानकारी और कोड स्निपेट जोड़ा गया। मैं अपने कोड एटीएम के लेआउट दिए गए मिक्स्ड क्लास का उपयोग करने का तरीका नहीं समझ सकता। –