【问题标题】:On button click open wxpython TextEntryDialog and get multiple input from user在按钮上单击打开 wxpython TextEntryDialog 并从用户那里获取多个输入
【发布时间】:2017-11-30 02:26:59
【问题描述】:

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

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

现在我必须在用户单击按钮 add_new 时打开一个 TextEntryDialog。我想让 textentrydialog 像这样 Python, Using wxPython to get multiple input from user

我该怎么做?我是否需要将该代码粘贴到`def OnAddNew(self,event)中: 这是我的代码的 pastebin 链接:https://pastebin.com/UEYscgFa 我在函数中创建了类,那么可以这样做吗?

【问题讨论】:

  • 记住!您只能接受一个答案,而不是两个!

标签: python user-interface input dialog wxpython


【解决方案1】:

不!
GetData 本身就是一个类。
该代码已经为您提供了该方法。 MyFrame 完全是为了创建一个独立的工作示例。

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()

编辑:我不明白我的 cmets 中的说明在哪里让你忽略了,但为了我的罪过,这里是你的代码,就像在 cmets 中一样清理和编辑。

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()

【讨论】:

  • 这给了我错误:NameError: global name 'GetData' is not defined,我想创建相同的 textentrydialog,最后我将发送该文本以在我的 sqlite 查询中使用
  • 你可以在这里看到我的代码:github.com/svnitHIMANSHU/Raman-spectroscopy-database/blob/…
  • 1. GetData 类在哪里,您已经从代码中完全省略了它,并且 2. 您调用了面板 p,因此调用应该是 dlg = GetData(parent = self.p) 并且要实现这一点,您需要将所有对 p 的引用更改为 @ 987654330@ 或者更具描述性的东西。
  • 我可以在 OnButton 函数中创建 GetData 类吗?
  • 它说全局名称 p 未定义
猜你喜欢
  • 2013-09-03
  • 2019-06-19
  • 2011-11-14
  • 2021-05-09
  • 1970-01-01
  • 2014-01-10
  • 2019-12-06
  • 2013-01-18
  • 1970-01-01
相关资源
最近更新 更多