2017-09-08 9 views
0

テキストボックスにメニューバーとテキストボックスを作成しました。選択した選択肢に属する変数に情報を表示したいのですがメニュー。メニューバーから選択したテキストボックスに特定のテキストを表示するには

しかし、私はどのように把握することはできません。

私はウェブ上のさまざまなガイドによってまとめることができました。私はまだpythonとImはオブジェクトやクラスのコンセプトに苦しんでいますので、どんな助けも大いに訴えています。ここで

from tkinter import Tk, Frame, Menu 
from tkinter import * 

class Example(Frame): 
    def __init__(self): 
    super().__init__() 
    self.initUI() 

    def initUI(self): 
    self.master.title("syntax explenation for shopfloor") 

    menubar = Menu(self.master) 
    self.master.config(menu=menubar) 

    syntaxMenu = Menu(menubar, tearoff=False)  
    submenu = Menu(syntaxMenu) 
    syntaxMenu.add_cascade(label='Math', menu=submenu, underline=0) 
    submenu.add_command(label="abs()", command=self.onSyntaxabs) 
    submenu.add_command(label="cos()", command=self.onSyntaxcos) 
    submenu.add_command(label="sin()", command=self.onSyntaxsin) 
    submenu.add_cascade(label="log()", command=self.onSyntaxlog) 
    submenu = Menu(syntaxMenu) 
    syntaxMenu.add_cascade(label='Inqurie', menu=submenu, underline=0) 
    submenu.add_command(label="inqiureText()", command=self.onSyntaxinquire) 

    menubar.add_cascade(label="Syntax", underline=0, menu=syntaxMenu) 

    def onSyntaxabs(): 
    info="Convert to absolute value, abs(-10) will respond with 10." 
    def onSyntaxcos(): 
    info="Returns cosinus value in decimal degrees" 
    def onSyntaxcos(): 
    info="Returns cosinus value in decimal degrees" 
    def onSyntaxlog(): 
    info="Returns the natural logarithm" 
    def onSyntaxinquire(): 
    info="Creates a pop-up box that you can enter text in." 


def main(): 

root = Tk() 
root.geometry("500x600") 
app = Example() 
S = Scrollbar(root) 
T = Text(root, height=20, width=60, bg="lightblue") 
S.pack(side=RIGHT, fill=Y) 
T.pack(side=LEFT, fill=BOTH) 
T.pack(side=RIGHT, fill=BOTH) 
S.config(command=T.yview) 
T.config(yscrollcommand=S.set) 
info=? 
T.insert(END, info) 
mainloop() 

if __name__ == '__main__': 
main() 
+0

コードには多くの問題があります。あなたはあなたの圧迫を修正する必要があります。何の理由もなくtkinterから2回インポートしています。 'info =?'は有効な文ではありません。あなたは 'info ="を意味していますか? "あなたは 'def onSyntaxcos():'を2回定義しています。 –

+0

まず、Pythonで['class'](https://docs.python.org/3/tutorial/classes.html)とは何かを理解する必要があります。その後、['tkinter'](https://docs.python.org/3/library/tkinter.html)に関するチュートリアルを続けることができます。 –

+0

あなたはあなたにエラーチェックを行う良いIDEを使用することで恩恵を受けるかもしれないので、引用符や引用符のような単純な問題を避けることができます。 EclipseやPy Charmのようなものかもしれない。 –

答えて

0

が前方に少しプッシュです:一般的に

from tkinter import Tk, Frame, Menu, Scrollbar, Text 
from tkinter import RIGHT, LEFT, BOTH, END, Y 
from tkinter import StringVar 

class Example(Frame): 
    def __init__(self, master): 
     super().__init__(master) 
     self.pack(fill=BOTH, expand=True) 
     self.initUI() 

    def initUI(self): 
     self.master.title("syntax explenation for shopfloor") 

     menubar = Menu(self.master) 
     self.master.config(menu=menubar) 

     syntaxMenu = Menu(menubar, tearoff=False) 
     submenu = Menu(syntaxMenu) 
     syntaxMenu.add_cascade(label='Math', menu=submenu, underline=0) 
     submenu.add_command(label="abs()", command=self.onSyntaxabs) 
     submenu.add_command(label="cos()", command=self.onSyntaxcos) 
     submenu.add_command(label="sin()", command=self.onSyntaxsin) 
     submenu.add_cascade(label="log()", command=self.onSyntaxlog) 
     submenu = Menu(syntaxMenu) 
     syntaxMenu.add_cascade(label='Inqurie', menu=submenu, underline=0) 
     submenu.add_command(label="inqiureText()", command=self.onSyntaxinquire) 

     menubar.add_cascade(label="Syntax", underline=0, menu=syntaxMenu) 


     S = Scrollbar(self)        # Should probably be an instance member as well 
     self.text = Text(self, height=20, width=60, bg="lightblue") 
     S.pack(side=RIGHT, fill=Y) 
     self.text.pack(side=LEFT, fill=BOTH) 
     self.text.pack(side=RIGHT, fill=BOTH) 
     S.config(command=self.text.yview) 
     self.text.config(yscrollcommand=S.set) 

     self.setText("?") 

    def setText(self, text): 
     self.text.delete(1.0,END) 
     self.text.insert(END, text) 


    def onSyntaxabs(self): 
     self.setText("Convert to absolute value, abs(-10) will respond with 10.") 

    def onSyntaxsin(self): 
     self.setText("Returns sinus value in decimal degrees") 

    def onSyntaxcos(self): 
     self.setText("Returns cosinus value in decimal degrees") 

    def onSyntaxlog(self): 
     self.setText("Returns the natural logarithm") 

    def onSyntaxinquire(self): 
     self.setText("Creates a pop-up box that you can enter text in.") 


def main(): 
    root = Tk() 
    root.geometry("500x600") 
    app = Example(master=root) 
    app.mainloop() 

if __name__ == '__main__': 
    main() 

、私はすべてのこれらのシンボルのインポートを回避しようと思い、ちょうど

import tkinter as tk 

ような何かを、あなたはFrameを書く場所またはRIGHTの場合はtk.Frameまたはtk.RIGHTを使用します。

また、ウィジェットの作成をすべてクラス内に移動しました。 Textウィジェットはクラスメンバー(self.text)であり、クラス内から簡単にアクセスして制御することができます。onSyntax___のメソッドはすべてTextウィジェットの内容を設定するsetText(別のクラスメソッド)を呼び出します。

希望します。

+0

'tk'としてインポートするのが最良ではないでしょうか。私に悪い練習のような同じライブラリの縫い目からいくつかの行にインポートします。非常に多くの輸入品について、私は 'tk'を使う方が良いと思うでしょう。 –

+0

@SierraMountainTech私は同意します - コードの下にある私の注釈が混乱しないことを願っています。私が使用した3つの輸入ラインのせいではありませんが、それは輸入するグローバルのトン*ですので、多くは共通しており、再定義されれば予期しない問題の原因になる可能性があります。 – jedwards

+0

輸入は実際にtkinterから実際に使われているものを視覚化するのに良いと思います。 –

0

ありがとうございます。

あなたの投稿と一緒に仕事を続けます。 私はEclipseとPy Charmを見ていきます。本当にそういうものが必要です。

関連する問題