【问题标题】:Python TKinter Menu with Options带有选项的 Python TKinter 菜单
【发布时间】:2016-12-03 23:34:50
【问题描述】:

我有一个 Python 代码,其中包含各种选项,例如添加、删除、搜索等... 我可以使用 Tkinter 制作一个 GUI,它基本上在运行时会显示带有所有选项的按钮,然后当您单击例如“添加”时,它会出现一个输入框供用户添加新值,然后返回初始值页面等...我使用JOptionPane在Java中很容易做到这一点(而不是按钮)..我尝试在Tkinter中搜索菜单,但不是我想要的(它出现在页面左上角的那些) ...

感谢所有帮助

【问题讨论】:

  • 是的,这一切皆有可能。
  • 怎么样?有链接吗?
  • “如何”对于 stackoverflow 来说太宽泛了。您需要从 tkinter 教程开始。
  • 我怎样才能和你解释我到目前为止得到了什么,什么没有?我知道如何做按钮、输入框和所有基础知识。每当我单击按钮时,我只是想不出如何创建一个新窗口。我在使用与 GUI 所在类不同的类中的方法时也遇到了问题
  • 如果您知道如何操作按钮,那么您应该知道按钮中的command=。要创建第二个窗口,请使用 tkinter.Toplevel() 类似于 tkinter.Tk()

标签: python python-3.x user-interface tkinter


【解决方案1】:

我认为快速谷歌搜索会找到这些答案。但无论如何,这里有一些链接可以帮助你。

Playlist of TKinter tutorial for future use (Object Oriented)
(他的 youtube 频道和他的网站非常适合学习基本和高级 Python(游戏、机器学习、网站等)

Add buttons

Input(也是很棒的网站)

Popup

示例代码

就像我说的,您可以快速搜索这些并找到答案。

from tkinter import *
import sys

class popupWindow(object):
    def __init__(self,master):
        top=self.top=Toplevel(master)
        self.l=Label(top,text="Add a new value")
        self.l.pack()
        self.e=Entry(top)
        self.e.pack()
        self.b=Button(top,text='Ok',command=self.cleanup)
        self.b.pack()
    def cleanup(self):
        self.value=self.e.get()
        self.top.destroy()
class mainWindow(object):
    def __init__(self,master):
        self.master=master
        self.b=Button(master,text="Add!",command=self.popup)
        self.b.pack()
        # Check python shell for the output
        self.b2=Button(master,text="Print Value From Input",command=lambda: sys.stdout.write(self.entryValue()+'\n'))
        self.b2.pack()

    def popup(self):
        self.w=popupWindow(self.master)
        self.master.wait_window(self.w.top)

    def entryValue(self):
        return self.w.value




root = Tk()
m = mainWindow(root)
root.mainloop()

【讨论】:

  • 其实这些都没有用。我明确说我想点击按钮,当我点击时,它会打开另一个窗口来执行操作..
  • 我编辑了我的原始答案以显示示例代码。在stackoverflow上,没有人会为你做你的工作,我们只是在你尽力而为之后提供帮助。
【解决方案2】:

@Manny102030 我得到了这个代码。基本上我想要的是在树中插入一个节点,该节点具有用户在 Tkinter 中输入的值。我不知道用户输入的值是否实际被插入,因为我不知道如何调用我创建的用于打印树的函数(该函数也在 BST 类中)。 我所做的是在 mainWindow 类中调用 BST,然后在 BST 中调用窗口供用户输入,当他单击“确定”时,它调用函数插入。然后在插入中,我从用户那里传递值来创建要放入树中的节点......关于如何调用函数来打印树的任何改进/任何想法? class mainWindow(object): def __init__(self,master): self.master = master self.b=Button(master,text="Add value",command=self.popupAdd) self.b.pack() def popupAdd(self): self.w=BST(self.master) self.master.wait_window(self.w.top) class BST(object): def __init__(self,master): self._root = None top=self.top=Toplevel(master) self.l=Label(top,text="Add a new value") self.l.pack() self.e=Entry(top) self.e.pack() self.b=Button(top,text='Ok',command=self.insert) self.b.pack() def insert(self): novo = No(self.e.get()) #insert value in Node if self._root == None: self._root = novo else: pai = self._root temp = self._root while temp != None: if valor > temp.getValor(): pai = temp temp = temp.getRight() elif (valor < temp.getValor()): pai = temp temp = temp.getLeft() else: temp = None print("Value Already exists") if valor > pai.getValor(): pai.setRight(novo) elif valor < pai.getValor(): pai.setLeft(novo) self.top.destroy() def printTree(self, root): if root != None: self.printTree(root.getLeft()) print(" " + str(root.getValor()), end="") self.printTree(root.getRight())

【讨论】:

    猜你喜欢
    • 2012-10-10
    • 2018-09-16
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2020-09-18
    相关资源
    最近更新 更多