2017-09-08 1 views
0

텍스트 상자에 메뉴 모음과 텍스트 상자를 만들었습니다. 만든 선택에 속한 변수에 정보를 표시하고 싶습니다. 메뉴.메뉴 막대에서 choise를 사용하여 텍스트 상자에 특정 텍스트를 표시하는 방법

하지만 어떻게 설명 할 수는 없습니다.

Heres 웹에서 다른 가이드가 함께 관리 한 내용. 임씨는 비단뱀에 새롭고 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에서 두 번 가져옵니다. 'info =?'는 당신이'info = "?"'를 의미하는 이미지를 만들 수있는 유효한 문장이 아닙니다. 당신은'def onSyntaxcos() :'를 두 번 정의했다. –

+0

먼저 파이썬에서 ['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() 

, 나는 그 모든 심볼 가져 오기 피하기 위해 노력하고 Frame 쓰기 곳 바로 다음

import tkinter as tk 

처럼 뭔가를 할 것 또는 RIGHT이면 tk.Frame 또는 tk.RIGHT을 사용합니다.

또한 모든 위젯 생성을 클래스 내부로 옮겼습니다. 이제 Text 위젯은 클래스 멤버 (self.text)이며 클래스 내에서 쉽게 액세스하고 제어 할 수 있습니다. 모든 onSyntax___ 메서드는 Text 위젯의 내용을 설정하는 setText (다른 클래스 메서드)을 호출합니다.

희망이 있습니다.

+0

'tk로 가져 오는 것이 가장 좋지 않을까요? 나에게 나쁜 습관과 같은 라이브러리 이음새에서 여러 줄로 가져 오기. 많은 수입품 때문에'tk' 사용은 더 좋을 것이라고 생각합니다. –

+0

@SierraMountainTech 동의합니다. 필자가 사용했던 세 가지 수입에 기인 한 것이 아니라 수입 할 세계 * 톤 *이기 때문에 그 중 많은 부분이 공통적으로 ('Y') 재 정의되면 예기치 않은 문제의 근원이 될 수 있습니다. – jedwards

+0

예. 나는 수입이 tkinter에서 실제로 사용되고있는 것을 시각화하는 것이 좋다고 생각한다. –

0

입력 해 주셔서 감사합니다.

나는 귀하의 게시물 jedward와 계속 작업하겠습니다. 필자는 Eclipse와 Py Charm을 살펴볼 것이다.

관련 문제