Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将我的代码与wxglade GUI集成_Python_User Interface_Wxglade - Fatal编程技术网

Python 将我的代码与wxglade GUI集成

Python 将我的代码与wxglade GUI集成,python,user-interface,wxglade,Python,User Interface,Wxglade,我对python非常陌生。这学期我参加了一门生物信息学课程,在我的最后一个项目中,我想创建一个应用程序,我们可以在未来的实验室中使用。我已经在PyCharm中创建并测试了实际的程序,但我想将其与GUI集成,并创建一个可执行文件,以便任何人都可以使用它,而无需打开IDE 到目前为止,我有一个简单的框架,带有一个按钮,可以获取输入文件的路径。我想走这条路,把它插入我已经存在的代码中。从嵌套在类MyFramewx.Frame:下的wxGlade代码: 但似乎OnOpenFileDialog块中定义的任

我对python非常陌生。这学期我参加了一门生物信息学课程,在我的最后一个项目中,我想创建一个应用程序,我们可以在未来的实验室中使用。我已经在PyCharm中创建并测试了实际的程序,但我想将其与GUI集成,并创建一个可执行文件,以便任何人都可以使用它,而无需打开IDE

到目前为止,我有一个简单的框架,带有一个按钮,可以获取输入文件的路径。我想走这条路,把它插入我已经存在的代码中。从嵌套在类MyFramewx.Frame:下的wxGlade代码:

但似乎OnOpenFileDialog块中定义的任何内容都只与该块一起存在。那么,我应该如何将代码集成到GUI中呢?我觉得把它全部粘贴到def OnOpenFileDialog下会非常难看和糟糕。我真的不知道从哪里开始。对不起,如果这个问题让人困惑,我会尽量澄清,如果需要的话。谢谢

定义一个方法read\u filefilefilename并从OnOpenFileDialog中调用它

def OnOpenFileDialog(self, event):  # wxGlade: MyFrame.<event_handler>
    dlg = wx.FileDialog(self, message="Choose a file")
    if dlg.ShowModal() ==wx.ID_OK:
        f = dlg.GetPath()
        filename_input = re.sub("\\\\", "/", f)
    dlg.Destroy() 
columns = defaultdict(list) # each value in each column is appended to a list
with open(filename_input) as file_object: # open the file
reader = csv.DictReader(file_object, delimiter='\t') # assign the file reader
for row in reader: # read a row as {column1: value1, column2: value2,...}
    for (k,v) in row.items(): # for each column (position) and value (residue)
        if v != '': # if the value isn't blank
            columns[k].append(v)  # append the residue to a list for that position