繁体   English   中英

wxPython,使用导入的类中的字段

[英]wxPython, using a field from an imported class

首先要声明我是一名业余程序员。

在连接到MySQL数据库的python / wxPython中构建个人软件

我的问题:

尝试编写一种将访问导入文件中的类的表单。 该表单可随时访问数据库中的4个相关表。

这些表中的三(3)始终相同。 第四个可以是两个表之一。

始终访问的表:会话,有氧运动和便笺这些可以变化的表是:物理或机器

我已将数据字段放在上述每个表的wx.Panel类中。 mainForm的菜单使用对物理参数或机器参数的引用来调用输入表单。 显示适当的表格及其数据字段。

我的问题是我无法访问这些导入的字段来从数据库加载数据。

我的代码部分:

主要形式:dailyResultsV2.py

import inputForm as IF

# Menu Event:

def OnShowBikeRecs(self,event):

self.bikeedit = IF.inputForm(None, -1, "Bike Record Management", size=(925,650), name="bike")
    self.bikeedit.Show()
    self.bikeedit.Center()

称为Form:inputForm.py

class inputForm(wx.Frame):
def __init__(self, parent, *args, **kwargs):
    wx.Frame.__init__(self, parent, *args, **kwargs)

    self.EXERCISE = kwargs['name']


    # create a panel
    self.panel = wx.Panel(self)
    self.panel.BackgroundColour = (200, 230, 250)
    self.filterSetup()
    self.sessionSection = IFC.tblSession(self.panel,-1)
    self.sessionSection.BackgroundColour = (200, 230, 250)
    if self.EXERCISE == 'walk':
        self.physicalSection = IFC.tblPhysical(self.panel,-1)
    else:
        self.machineSection = IFC.tblMachine(self.panel,-1)

    self.cardioSection = IFC.tblcardio(self.panel,-1)
    self.notesSection = IFC.tblNotes(self.panel,-1)
    self.buttonSetup()
    self.topsizer()

上一类创建一个输入表单,其中将包含物理表或计算机表中的所有字段。

我的问题是如何访问这些字段以从数据库添加数据或更新数据库。 (一方面请注意,这是一个体育锻炼数据库)。

导入的类的示例:inputFormClasses.py

class tblMachine(wx.Panel):    
def __init__(self, parent, *args, **kwargs):
    wx.Panel.__init__(self, parent, *args, **kwargs)

    self.BackgroundColour = (200, 230, 250)

    # The columns
    # machine_ID - not displayed        machine_session_FK  - not displayed     machine_level  - not displayed
    # machine_Type_FK   machine_Distance    machine_AvgSpeed   machine_MaxSpeed     machine_Duration     machine_ODO     machine_RunFK - ComboBox           

    self.runNames = []      # ComboBox List

    self.machineLabel_st = wx.StaticText(self, -1, "Machine", style=wx.ALIGN_LEFT)
    self.machineType_st = wx.StaticText(self, -1, "Type", style=wx.ALIGN_LEFT)
    self.machineType_tc = wx.TextCtrl(self, -1, value="Biking",  style=wx.TE_CENTRE)
    self.machineDistance_st = wx.StaticText(self, -1, "Distance", style=wx.ALIGN_LEFT)
    self.machineDistance_tc = wx.TextCtrl(self, -1, style=wx.TE_CENTRE)
    self.machineAvgSpeed_st = wx.StaticText(self, -1, "Avg. Speed", style=wx.ALIGN_LEFT)
    self.machineAvgSpeed_tc = wx.TextCtrl(self, -1, style=wx.TE_CENTRE)
    self.machineMaxSpeed_st = wx.StaticText(self, -1, "Max Speed", style=wx.ALIGN_LEFT)
    self.machineMaxSpeed_tc = wx.TextCtrl(self, -1, style=wx.TE_CENTRE)
    self.machineDuration_st = wx.StaticText(self, -1, "Duration", style=wx.ALIGN_LEFT)
    self.machineDuration_mtc = masked.TimeCtrl(self, -1, fmt24hr=True)
    self.machineODO_st = wx.StaticText(self, -1, "Odometer", style=wx.ALIGN_LEFT)
    self.machineODO_tc = wx.TextCtrl(self, -1, style=wx.TE_CENTRE)
    self.machineRun_st = wx.StaticText(self, -1, "Run", style=wx.ALIGN_LEFT)
    self.machineRun_cbo = wx.ComboBox(self, -1, choices = self.getRunNames(self.runNames), style=wx.CB_READONLY)  # get the list of runs for comboBox

    # create machine sizer
    self.MachineSizer    = wx.GridBagSizer(hgap=5, vgap=5)

例如,如何访问表单上的self.machineType_tc?

查看sqlite3库:我用它来做类似的事情:

import sqlite3
def insert_user(cursor,username,password,port,steps,lat,long):   
    try:    
        cursor.execute("INSERT INTO mydb VALUES(?,?,?,?,?,?)",            (username,password,port,steps,lat,long))
        return "Success"
    except Exception as e:
        print e
        return "Failure"

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM