在按钮上单击打开wxpython TextEntryDialog并从用户获取多个输入 [英] On button click open wxpython TextEntryDialog and get multiple input from user

查看:155
本文介绍了在按钮上单击打开wxpython TextEntryDialog并从用户获取多个输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当用户单击按钮时,我想打开一个TextEntryDialog。因此,如果我在父框架中有一个将以这种方式绑定的按钮:

I want to open a TextEntryDialog, when user clicks the button. So if i have a button in the parent frame which i am going to bind this way:

      self.Bind(wx.EVT_BUTTON, self.OnAddNew, self.add_new_btn)

现在我必须在用户单击按钮时打开TextEntryDialog添新。我想使textentrydialog这样的东西
Python,使用wxPython从用户那里获取多个输入

Now i have to open a TextEntryDialog when user clicks the button add_new. I want to make textentrydialog somewthing like this Python, Using wxPython to get multiple input from user

我该怎么做?我是否只需要将该代码粘贴到def OnAddNew(self,event)中:
这是我的代码的pastebin链接: https://pastebin.com/UEYscgFa
我已经在函数内创建了类,是否可以通过这种方式进行?

How can i do that? Do i need to just paste that code in ` def OnAddNew(self, event): Here is the pastebin link to my code: https://pastebin.com/UEYscgFa I have created class inside a function, so is it possible to do in that way?

推荐答案

否!

GetData 本身就是一个类。

该代码已经为您提供了该方法。
MyFrame 全部都是虚张声势,以创建一个独立的工作示例。

NO!
GetData is a class in its own right.
That code already provides you with the method. The MyFrame is all fluff, to create a standalone working example.

def OnButton(self,event):
    dlg = GetData(parent = self.panel) 
    dlg.ShowModal()
    if dlg.result_name:
        self.log.AppendText("Name: "+dlg.result_name+"\n")
        self.log.AppendText("Surname: "+dlg.result_surname+"\n")
        self.log.AppendText("Nickname: "+dlg.result_nickname+"\n")
    else:
        self.log.AppendText("No Input found\n")
    dlg.Destroy()

编辑:我不明白我的评论中的说明在哪里躲着你,但我的罪过在这里

I don't understand where the instructions in my comments eluded you but for my sins, here is your code cleaned up and edited as in the comments.

import sqlite3
import wx
import os

class Example(wx.Frame):
    def __init__(self, parent, title):
        super(Example, self).__init__(parent, title=title, size=(1000,800))
        self.inter_list = list()
        self.plot_list = list()
        self.InitUI()
        self.Layout()
        self.Centre()
        self.Show()

    def InitUI(self):
        self.p = wx.Panel(self)
        bs = wx.BoxSizer(wx.VERTICAL)
        gs = wx.GridSizer(10, 18, 5, 5)
        bs.Add(gs, 1, wx.EXPAND)
        self.search_btn=wx.Button(self.p,-1,"Search!")
        self.search_btn.Bind(wx.EVT_BUTTON, self.OnSearch, self.search_btn)
        bs.Add(self.search_btn,0,wx.ALIGN_CENTER)
        self.p.SetSizer(bs)

    def OnSearch(self, event):
        dlg = GetData(parent = self.p)
        dlg.ShowModal()
        if dlg.result_name:
            print "Name: "+dlg.result_name+"\n"
            print "Surname: "+dlg.result_surname+"\n"
            print "Nickname: "+dlg.result_nickname+"\n"
        else:
            print "No Input found\n"
        dlg.Destroy()

class GetData(wx.Dialog):
    def __init__(self, parent):
        wx.Dialog.__init__(self, parent, wx.ID_ANY, "Name Input", size= (650,220))
        self.p = wx.Panel(self,wx.ID_ANY)
        self.lblname = wx.StaticText(self.p, label="Name", pos=(20,20))
        self.name = wx.TextCtrl(self.p, value="", pos=(110,20), size=(500,-1))
        self.lblsur = wx.StaticText(self.p, label="Surname", pos=(20,60))
        self.surname = wx.TextCtrl(self.p, value="", pos=(110,60), size=(500,-1))
        self.lblnick = wx.StaticText(self.p, label="Nickname", pos=(20,100))
        self.nickname = wx.TextCtrl(self.p, value="", pos=(110,100), size=(500,-1))
        self.saveButton =wx.Button(self.p, label="Save", pos=(110,160))
        self.closeButton =wx.Button(self.p, label="Cancel", pos=(210,160))
        self.saveButton.Bind(wx.EVT_BUTTON, self.SaveConnString)
        self.closeButton.Bind(wx.EVT_BUTTON, self.OnQuit)
        self.Bind(wx.EVT_CLOSE, self.OnQuit)
        self.Show()

    def OnQuit(self, event):
        self.result_name = None
        self.Destroy()

    def SaveConnString(self, event):
        self.result_name = self.name.GetValue()
        self.result_surname = self.surname.GetValue()
        self.result_nickname = self.nickname.GetValue()
        self.Destroy()

app = wx.App()
Example(None, title = 'Raman Spectroscopy Database')
app.MainLoop()

这篇关于在按钮上单击打开wxpython TextEntryDialog并从用户获取多个输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆