- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,在我的 Listctrl 中设置一些数字时遇到了一些麻烦 它们是 SQL 数据库中的数字,它们作为字符串插入...自动转换为数字
from wx import *
import Item as i
class ItemMain ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"Items", pos = wx.DefaultPosition, size = wx.Size( 517,486 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHintsSz( wx.Size( -1,-1 ), wx.DefaultSize )
bSizer3 = wx.BoxSizer( wx.VERTICAL )
# Create a Item
self.ite = i.Item()
self.list = wx.ListCtrl( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize,wx.LC_REPORT )
self.list.InsertColumn(0,"Item ID")
self.list.InsertColumn(1,"Item Name")
self.list.InsertColumn(2,"Item Price")
self.list.InsertColumn(3,"Stock")
self.list.Bind(EVT_LIST_ITEM_SELECTED,self.GetSelectedItems)
self.list.SetMinSize( wx.Size( 500,300 ) )
self.list.SetMaxSize( wx.Size( 1000,800 ) )
self.refresh_list(None)
bSizer3.Add( self.list, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )
bSizer4 = wx.BoxSizer( wx.HORIZONTAL )
self.m_button20 = wx.Button( self, wx.ID_ANY, u"Add Item", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_button20.Bind(wx.EVT_BUTTON, self.add_entry)
bSizer4.Add( self.m_button20, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_button21 = wx.Button( self, wx.ID_ANY, u"Update Record", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_button21.Bind(wx.EVT_BUTTON, self.update_entry)
bSizer4.Add( self.m_button21, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
bSizer3.Add( bSizer4, 1, wx.EXPAND, 5 )
self.SetSizer( bSizer3 )
self.Layout()
self.Centre( wx.BOTH )
self.Show()
def refresh_list(self, event):
"""Place the names of each ItemEntry into the list"""
self.index = 0
self.entrydict = {}
self.list.DeleteAllItems()
for entry in self.ite.list_entries():
self.list.InsertStringItem(self.index,entry.Item_ID)
self.list.SetStringItem(self.index,1,entry.Item_Name)
self.list.SetStringItem(self.index,2,entry.Item_Price)
self.list.SetStringItem(self.index,3,entry.Item_Qty)
self.entrydict[self.index] = entry
self.index += 1
def GetSelectedItems(self, event):
""" Gets the selected items for the list control.
Selection is returned as a list of selected indices,
low to high.
"""
selection = []
self.index = self.list.GetFirstSelected()
selection.append(self.index)
while len(selection) != self.list.GetSelectedItemCount():
self.index = self.list.GetNextSelected(self.index)
selection.append(self.index)
return self.index
def add_entry(self, event):
"""Add a new entry to the Item_Qty ite"""
# start out with blank, generic ItemEntry
entry = i.ItemEntry("","","","0")
self.endiag = ItemDetail(self,entry)
self.endiag.ShowModal()
self.ite.add_entry(entry.Item_ID,
entry.Item_Name,
entry.Item_Price,
entry.Item_Qty )
self.refresh_list(None)
def update_entry(self, event):
"""updates the details of the currently selected entry"""
e_id = self.index
entry = self.ite.list_entries()[e_id]
self.endiag2 = ItemDetailU(self , entry)
self.endiag2.ShowModal()
self.ite.update_entry(entry.Item,
entry.Item_Name,
entry.Item_Price,
entry.Item_Qty )
self.refresh_list(None)
def __del__( self ):
pass
class ItemDetail ( wx.Dialog ):
def __init__( self, parent, entry ):
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title =u"Add Item", pos = wx.DefaultPosition, size = wx.Size( 690,500 ), style = wx.DEFAULT_DIALOG_STYLE )
self.entry = entry
self.SetSizeHintsSz( wx.Size( 500,500 ), wx.DefaultSize )
bSizer6 = wx.BoxSizer( wx.VERTICAL )
gSizer6 = wx.GridSizer( 2, 2, 0, 0 )
self.m_staticText5 = wx.StaticText( self, wx.ID_ANY, u"ID", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText5.Wrap( -1 )
gSizer6.Add( self.m_staticText5, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.Item_ID = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
self.Item_ID.SetMinSize( wx.Size( 200,15 ) )
self.Item_ID.SetMaxSize( wx.Size( 500,15 ) )
self.m_staticText6 = wx.StaticText( self, wx.ID_ANY, u"Item Name", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText6.Wrap( -1 )
gSizer6.Add( self.m_staticText6, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.Item_Name = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
self.Item_Name.SetMinSize( wx.Size( 200,15 ) )
self.Item_Name.SetMaxSize( wx.Size( 500,15 ) )
gSizer6.Add( self.Item_Name, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND, 5 )
self.m_staticText7 = wx.StaticText( self, wx.ID_ANY, u"Item Price", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText7.Wrap( -1 )
gSizer6.Add( self.m_staticText7, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.Item_Price = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
self.Item_Price.SetMinSize( wx.Size( 200,15 ) )
self.Item_Price.SetMaxSize( wx.Size( 500,15 ) )
gSizer6.Add( self.Item_Price, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_staticText7 = wx.StaticText( self, wx.ID_ANY, u"Stock", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText7.Wrap( -1 )
gSizer6.Add( self.m_staticText7, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_staticText8 = wx.StaticText( self, wx.ID_ANY, self.entry.Item_Qty, wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText8.Wrap( -1 )
gSizer6.Add( self.m_staticText8, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
bSizer6.Add( gSizer6, 1, wx.EXPAND, 5 )
bSizer13 = wx.BoxSizer( wx.HORIZONTAL )
self.m_button24 = wx.Button( self, wx.ID_ANY, u"ok", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_button24.Bind(wx.EVT_BUTTON, self.ok)
bSizer13.Add( self.m_button24, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_button25 = wx.Button( self, wx.ID_ANY, u"cancel", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_button25.Bind(wx.EVT_BUTTON, self.closeDial)
bSizer13.Add( self.m_button25, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
bSizer6.Add( bSizer13, 1, wx.EXPAND, 5 )
self.SetSizer( bSizer6 )
self.Layout()
self.Centre( wx.BOTH )
def closeDial(self,event):
"""Closes the Dialog"""
self.Destroy()
def ok(self, event):
"""sets the details of the current entry"""
self.entry.set_details( str(self.Item_ID.GetValue()),
str(self.Item_Name.GetValue()),
str(self.Item_Price.GetValue()),
str(self.Item_Qty.GetValue()) )
self.Destroy()
def __del__( self ):
pass
class ItemDetailU ( wx.Dialog ):
def __init__( self, parent, entry ):
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Update Item:", pos = wx.DefaultPosition, size = wx.Size( 690,500 ), style = wx.DEFAULT_DIALOG_STYLE )
self.entry = entry
self.SetSizeHintsSz( wx.Size( 500,500 ), wx.DefaultSize )
bSizer6 = wx.BoxSizer( wx.VERTICAL )
gSizer6 = wx.GridSizer( 2, 2, 0, 0 )
self.m_staticText5 = wx.StaticText( self, wx.ID_ANY, u"ID", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText5.Wrap( -1 )
gSizer6.Add( self.m_staticText5, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_staticText121 = wx.StaticText( self, wx.ID_ANY, self.entry.Item_ID, wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText121.Wrap( -1 )
gSizer6.Add( self.m_staticText121, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL, 5 )
self.m_staticText6 = wx.StaticText( self, wx.ID_ANY, u"Item Name", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText6.Wrap( -1 )
gSizer6.Add( self.m_staticText6, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.Item_Name = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
self.Item_Name.SetMinSize( wx.Size( 200,15 ) )
self.Item_Name.SetMaxSize( wx.Size( 500,15 ) )
gSizer6.Add( self.Item_Name, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND, 5 )
self.m_staticText7 = wx.StaticText( self, wx.ID_ANY, u"Item Price", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText7.Wrap( -1 )
gSizer6.Add( self.m_staticText7, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.Item_Price = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
self.Item_Price.SetMinSize( wx.Size( 200,15 ) )
self.Item_Price.SetMaxSize( wx.Size( 500,15 ) )
gSizer6.Add( self.Item_Price, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_staticText7 = wx.StaticText( self, wx.ID_ANY, u"Stock", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText7.Wrap( -1 )
gSizer6.Add( self.m_staticText7, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_staticText8 = wx.StaticText( self, wx.ID_ANY, self.entry.Item_Qty, wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText8.Wrap( -1 )
gSizer6.Add( self.m_staticText8, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
bSizer6.Add( gSizer6, 1, wx.EXPAND, 5 )
bSizer13 = wx.BoxSizer( wx.HORIZONTAL )
self.m_button24 = wx.Button( self, wx.ID_ANY, u"ok", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_button24.Bind(wx.EVT_BUTTON, self.ok)
bSizer13.Add( self.m_button24, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_button25 = wx.Button( self, wx.ID_ANY, u"cancel", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_button25.Bind(wx.EVT_BUTTON, self.closeDial)
bSizer13.Add( self.m_button25, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
bSizer6.Add( bSizer13, 1, wx.EXPAND, 5 )
self.SetSizer( bSizer6 )
self.Layout()
self.Centre( wx.BOTH )
def closeDial(self,event):
self.Destroy()
def ok(self, event):
self.entry.set_details( str(self.Item_ID.GetValue()),
str(self.Item_Name.GetValue()),
str(self.Item_Price.GetValue()),
str(self.Item_Qty.GetValue()) )
self.Destroy()
def __del__( self ):
pass
def main():
ex = wx.App()
ItemMain(None)
ex.MainLoop()
if __name__ == '__main__':
main()
我的问题在于在 listctrl 中设置数字。考虑到我在设置条目时将它们转换为字符串,当调用刷新列表函数时,错误调用 SetStingItem,其中值为价格 Likely to happen to quantity also 坚持我插入一个字符串,而提供的不是一个字符串……关于如何解决这个问题的任何想法?找不到任何 python 文档来帮助我
最佳答案
如前所述,您需要将项目转换为字符串。我实际上会在您的 Item 代码中进行转换,所以它是在幕后完成的。另一种可能可行的替代方法是对 wx.ListCtrl 本身进行子类化并覆盖 Setter,但我认为如果您可以在 Item 类中这样做就太过分了。
关于python - 是否可以在 listctrl 中将数字设置为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16628238/
我有一个 if 语句,如下所示 if (not(fullpath.lower().endswith(".pdf")) or not (fullpath.lower().endswith(tup
然而,在 PHP 中,可以: only appears if $foo is true. only appears if $foo is false. 在 Javascript 中,能否在一个脚
XML有很多好处。它既是机器可读的,也是人类可读的,它具有标准化的格式,并且用途广泛。 它也有一些缺点。它是冗长的,不是传输大量数据的非常有效的方法。 XML最有用的方面之一是模式语言。使用模式,您可
由于长期使用 SQL2000,我并没有真正深入了解公用表表达式。 我给出的答案here (#4025380)和 here (#4018793)违背了潮流,因为他们没有使用 CTE。 我很欣赏它们对于递
我有一个应用程序: void deleteObj(id){ MyObj obj = getObjById(id); if (obj == null) { throw n
我的代码如下。可能我以类似的方式多次使用它,即简单地说,我正在以这种方式管理 session 和事务: List users= null; try{ sess
在开发J2EE Web应用程序时,我通常会按以下方式组织我的包结构 com.jameselsey.. 控制器-控制器/操作转到此处 服务-事务服务类,由控制器调用 域-应用程序使用的我的域类/对象 D
这更多是出于好奇而不是任何重要问题,但我只是想知道 memmove 中的以下片段文档: Copying takes place as if an intermediate buffer were us
路径压缩涉及将根指定为路径上每个节点的新父节点——这可能会降低根的等级,并可能降低路径上所有节点的等级。有办法解决这个问题吗?有必要处理这个吗?或者,也许可以将等级视为树高的上限而不是确切的高度? 谢
我有两个类,A 和 B。A 是 B 的父类,我有一个函数接收指向 A 类型类的指针,检查它是否也是 B 类型,如果是将调用另一个函数,该函数接受一个指向类型 B 的类的指针。当函数调用另一个函数时,我
有没有办法让 valgrind 使用多个处理器? 我正在使用 valgrind 的 callgrind 进行一些瓶颈分析,并注意到我的应用程序中的资源使用行为与在 valgrind/callgrind
假设我们要使用 ReaderT [(a,b)]超过 Maybe monad,然后我们想在列表中进行查找。 现在,一个简单且不常见的方法是: 第一种可能性 find a = ReaderT (looku
我的代码似乎有问题。我需要说的是: if ( $('html').attr('lang').val() == 'fr-FR' ) { // do this } else { // do
根据this文章(2018 年 4 月)AKS 在可用性集中运行时能够跨故障域智能放置 Pod,但尚不考虑更新域。很快就会使用更新域将 Pod 放入 AKS 中吗? 最佳答案 当您设置集群时,它已经自
course | section | type comart2 : bsit201 : lec comart2 :
我正在开发自己的 SDK,而这又依赖于某些第 3 方 SDK。例如 - OkHttp。 我应该将 OkHttp 添加到我的 build.gradle 中,还是让我的 SDK 用户包含它?在这种情况下,
随着 Rust 越来越充实,我对它的兴趣开始激起。我喜欢它支持代数数据类型,尤其是那些匹配的事实,但是对其他功能习语有什么想法吗? 例如标准库中是否有标准过滤器/映射/归约函数的集合,更重要的是,您能
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我一直在研究 PHP 中的对象。我见过的所有示例甚至在它们自己的对象上都使用了对象构造函数。 PHP 会强制您这样做吗?如果是,为什么? 例如: firstname = $firstname;
...比关联数组? 关联数组会占用更多内存吗? $arr = array(1, 1, 1); $arr[10] = 1; $arr[] = 1; // <- index is 11; does the
我是一名优秀的程序员,十分优秀!