相关疑难解决方法(0)

Tkinter 在 Frames 中添加菜单栏

我正在使用 @Bryan Oakley在此处tkinter 中的两帧之间切换的答案中发布的代码。现在我想添加一些菜单栏。在 Pageone 中,我想添加菜单FileHelp 而在 Pagetwo 中,我想添加菜单Dataplot 但我无法完成。

我可以将菜单添加到主窗口。但是随后它可用于所有页面,并且在我更改页面时不会消失。我不想要那个。我想添加特定于该页面的菜单栏。我怎样才能做到这一点

编辑

实际上我想做的是,我正在制作一个 GUI,您可以在其中进行数学积分和矩阵计算等。因此,在打开 GUI 时,会出现带有积分、矩阵等按钮的窗口。单击这些按钮将打开一个窗口,您可以在其中进行相应的计算。我使用Toplevel()打开一个新窗口的命令来完成它,我只是隐藏了以前的。但我喜欢 Bryan 在该链接中发布的 GUI 代码,所以我询问了向单个页面添加菜单的问题。

在 Bryan 的代码中,我刚刚添加了这些行 `class SampleApp(tk.Tk):

def __init__(self, *args, **kwargs):
    tk.Tk.__init__(self, *args, **kwargs)
    menu=tk.Menu(self)
    self.config(menu=menu)
    subMenu=tk.Menu(menu)
    menu.add_cascade(label="File",menu=subMenu)`
Run Code Online (Sandbox Code Playgroud)

但正如我所说,它将菜单附加到主窗口。但我想要不同页面的不同菜单。

python tkinter python-2.7

4
推荐指数
1
解决办法
6770
查看次数

Python Tkinter文本修改后的回调

在python 2.7中,每次Tkinter Text小部件中发生更改时,我都试图获取回调。

该程序根据此处找到的代码使用多个帧:在tkinter中的两个帧之间切换

回调部分摘自以下示例:http : //code.activestate.com/recipes/464635-call-a-callback-when-a-tkintertext-is-modified/

两种代码都可以单独很好地工作,但是将这两种代码结合起来对我来说很难。这是我尝试使用尽可能简单的代码。

import Tkinter as tk

class Texter(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        container = tk.Frame(self)
        container.pack()

        self.frames = {}

        for F in (ConnectPage, EditorPage):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")

        page_name = EditorPage.__name__
        self.frames[page_name] = frame
        self.show_frame(ConnectPage)


    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()

    def get_page(self, page_name):
        return self.frames[page_name]


class ConnectPage(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        button1 = tk.Button(self, text="SecondPage",
                            command=lambda: controller.show_frame(EditorPage))
        button1.grid(row=2, column=3, …
Run Code Online (Sandbox Code Playgroud)

python tkinter callback tkinter.text

4
推荐指数
1
解决办法
2388
查看次数

Tkinter 在单独的文件中有页面代码

我有打开一个窗口的代码,并且有第 1 页、第 2 页和第 3 页的三个按钮。但是我也有四个 .py 文件(仪表板、PageOne、PageTwo。PageThree)。仪表板将是用于运行应用程序的文件。我希望它使每个文件中的代码仅在用户单击相应的页面按钮时运行/显示。

仪表板.py:

import Tkinter as tk
import PageOne
import PageTwo
import PageThree

class Page(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
    def show(self):
        self.lift()

class MainView(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        p1 = Page1(self)
        p2 = Page2(self)
        p3 = Page3(self)

        buttonframe = tk.Frame(self)
        container = tk.Frame(self)
        buttonframe.pack(side="top", fill="x", expand=False)
        container.pack(side="top", fill="both", expand=True)

        p1.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
        p2.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
        p3.place(in_=container, x=0, y=0, relwidth=1, relheight=1)

        b1 = tk.Button(buttonframe, …
Run Code Online (Sandbox Code Playgroud)

python tkinter python-2.7

3
推荐指数
1
解决办法
3695
查看次数

在 tkinter 菜单中的帧之间切换

我已经使用 Tkinter 创建了一个具有不同菜单选项的 GUI(下面生成了一个类似的示例)。每个菜单都有不同的命令,单击这些命令会创建一个新框架。现在发生的情况是,如果我切换到不同的命令,新帧将堆叠在当前帧下方,而不是替换旧帧。

我想知道前进的最佳方式是什么。

import Tkinter as tkinter
root = tkinter.Tk()
root.minsize(400,300)
welcome = tkinter.Frame(root).grid()
label = tkinter.Label(welcome, text="Welcome to my program").grid(row=0, column=3)
button = tkinter.Button(welcome,text="Exit",command=root.destroy).grid(row=3, column=1)
def newFrame():
newFrame = tkinter.Frame(root).grid()
newFrame_name = tkinter.Label(newFrame, text="This is another frame").grid()
menu = tkinter.Menu(root)
root.config(menu=menu)
main_menu = tkinter.Menu(menu)
menu.add_cascade(label="Main Menu", menu= main_menu)
main_menu.add_command(label="New Frame", command=newFrame)
main_menu.add_command(label="Another Frame", command=newFrame)
#menu.add_command(label="Exit", command=root.destroy, menu= filemenu)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

现在,如果我在新框架和另一个框架之间切换,窗口会堆叠起来,但我希望一个窗口替换另一个。

有任何想法吗?谢谢。

python tkinter

2
推荐指数
1
解决办法
1万
查看次数

如何在每次在tkinter中显示帧时运行一个方法

我有一个gui应用程序,有几个窗口和按钮前进和后退.为此,我使用控制器并在每次更改窗口时将帧提升到顶部.这是我的控制器代码和典型的框架.

import Tkinter as tk   # python
from tkFileDialog import askopenfilename, asksaveasfilename
from analyzer import Options

TITLE_FONT = ("Helvetica", 18, "bold")

class TennisProgram(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        # the container is where we'll stack a bunch of frames
        # on top of each other, then the one we want visible
        # will be raised above the others
        container = tk.Frame(self)
        #Allow the window to be resized
        # container.resizable(width=True, height=True)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)
        #List …
Run Code Online (Sandbox Code Playgroud)

python tkinter

2
推荐指数
1
解决办法
2619
查看次数

使用按钮wxpython更改面板

import wx
import wx.grid as gridlib

########################################################################
class PanelOne(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)
        txt = wx.TextCtrl(self)
        button =wx.Button(self, label="Save", pos=(200, 325))
        button.Bind(wx.EVT_BUTTON, self.onSwitchPanels)

########################################################################
class PanelTwo(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)

        grid = gridlib.Grid(self)
        grid.CreateGrid(25,12)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(grid, 0, wx.EXPAND)
        self.SetSizer(sizer)

########################################################################
class MyForm(wx.Frame):

    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,
                          "Panel Switcher Tutorial")

        self.panel_one = PanelOne(self)
        self.panel_two = PanelTwo(self)
        self.panel_two.Hide()

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.panel_one, 1, wx.EXPAND)
        self.sizer.Add(self.panel_two, 1, wx.EXPAND)
        self.SetSizer(self.sizer)

        menubar = …
Run Code Online (Sandbox Code Playgroud)

python wxpython

1
推荐指数
1
解决办法
5441
查看次数

标签 统计

python ×6

tkinter ×5

python-2.7 ×2

callback ×1

tkinter.text ×1

wxpython ×1