2017-05-18 3 views
0

안녕하세요 스택 오버플로 커뮤니티, 저는 abaqus 용 파이썬 스크립트 작업을하고 있습니다. 부품 경로를 변경해야 할 때 경로를 사용하여 abaqus로 부품을 가져와야하므로 tkinter를 사용하여 GUI를 작성하여 부품 경로를 지정해야했습니다. 여기 내 문제 : GUI에서 소스 코드로 경로 (변수)를 읽는 방법은 무엇입니까?abaqus 및 tkinter GUI 용 파이썬 스크립트

here is the GUI if it can help

변명 내 나쁜 영어 여기

입니다 내 소스 코드에 변화를 만들고 싶어 여기

import tkinter 

class simpleapp_tk(tkinter.Tk): 
    def __init__(self,parent): 
     tkinter.Tk.__init__(self,parent) 
     self.parent = parent 
     self.initialize() 

    def initialize(self): 
     self.grid() 

     self.entryVariable1 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable1) 
     self.entry.grid(column=0,row=1,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable1.set(u"Enter text here.") 

     self.entryVariable2 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable2) 
     self.entry.grid(column=0,row=2,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable2.set(u"Enter text here.") 

     self.entryVariable3 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable3) 
     self.entry.grid(column=0,row=3,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable3.set(u"Enter text here.") 

     self.entryVariable4 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable4) 
     self.entry.grid(column=0,row=4,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable4.set(u"Enter text here.") 

     self.entryVariable5 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable5) 
     self.entry.grid(column=0,row=5,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable5.set(u"Enter text here.") 

     self.entryVariable6 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable6) 
     self.entry.grid(column=0,row=6,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable6.set(u"Enter text here.") 

     self.entryVariable7 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable7) 
     self.entry.grid(column=0,row=7,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable7.set(u"Enter text here.") 

     self.entryVariable8 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable8) 
     self.entry.grid(column=0,row=8,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable8.set(u"Enter text here.") 

     self.entryVariable9 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable9) 
     self.entry.grid(column=0,row=9,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable9.set(u"Enter text here.") 

     self.entryVariable10 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable10) 
     self.entry.grid(column=0,row=10,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable10.set(u"Enter text here.") 

     Label = tkinter.Label(self,text=u" chemin table de paramétrage ") 
     Label.grid(column=2,row=1) 

     Label = tkinter.Label(self,text=u" chemin axe ") 
     Label.grid(column=2,row=2) 

     Label = tkinter.Label(self,text=u" chemin bague exterieure ") 
     Label.grid(column=2,row=3) 

     Label = tkinter.Label(self,text=u" chemin bague interieure ") 
     Label.grid(column=2,row=4) 

     Label = tkinter.Label(self,text=u" chemin bague ") 
     Label.grid(column=2,row=5) 

     Label = tkinter.Label(self,text=u" chemin calle ") 
     Label.grid(column=2,row=6) 

     Label = tkinter.Label(self,text=u" chemin lame M2 ") 
     Label.grid(column=2,row=7) 

     Label = tkinter.Label(self,text=u" chemin lame M1 ") 
     Label.grid(column=2,row=8) 

     Label = tkinter.Label(self,text=u" chemin Patin1 ") 
     Label.grid(column=2,row=9) 

     Label = tkinter.Label(self,text=u" chemin Patin2 ") 
     Label.grid(column=2,row=10) 

     button = tkinter.Button(self,text=u" DONE ") 
     button.grid(column=1,row=11) 
     self.labelVariable = tkinter.StringVar() 
     label = tkinter.Label(self,textvariable=self.labelVariable, 
           anchor="w",fg="white",bg="black") 
     label.grid(column=0,row=0,columnspan=3,sticky='EW') 
     self.labelVariable.set(u"hello have a nice day") 

     self.grid_columnconfigure(0,weight=1) 
     self.resizable(True,False) 
     self.update() 
     self.geometry(self.geometry())  
     self.entry.focus_set() 
     self.entry.selection_range(0, tkinter.END) 

    def OnButtonClick(self): 
     self.labelVariable.set(self.entryVariable.get()+" (You clicked the button)") 
     self.entry.focus_set() 
     self.entry.selection_range(0, tkinter.END) 

    def OnPressEnter(self,event): 
     self.labelVariable.set(self.entryVariable.get()+" (You pressed ENTER)") 
     self.entry.focus_set() 
     self.entry.selection_range(0, tkinter.END) 

if __name__ == "__main__": 
    app = simpleapp_tk(None) 
    app.title('GUI for script abaqus') 
    app.mainloop() 

하고있는 GUI의 코드

part1Directory='C:/Users/khalil/Desktop/PFE/pieces/axe.stp' 
part2Directory='C:/Users/khalil/Desktop/PFE/pieces/bague exterieur.stp' 
part3Directory='C:/Users/khalil/Desktop/PFE/pieces/bague interieure.stp' 
part4Directory='C:/Users/khalil/Desktop/PFE/pieces/bague.stp' 
part5Directory='C:/Users/khalil/Desktop/PFE/pieces/calle.stp' 
part6Directory='C:/Users/khalil/Desktop/PFE/pieces/lame inf.stp' 
part7Directory='C:/Users/khalil/Desktop/PFE/pieces/lame sup.stp' 
part8Directory='C:/Users/khalil/Desktop/PFE/pieces/patin 2.stp' 
part9Directory='C:/Users/khalil/Desktop/PFE/pieces/patin.stp' 
+1

[mcve] –

+0

어떤 abaqus 버전을 사용하고 있습니까? – CodeCupboard

답변

0

게시 한 코드의 단순화 된 버전입니다. 이것은 완벽한 해결책은 아니지만 어떻게 완료되었는지에 대한 아이디어를 제공해야합니다.

from functools import partial 
import tkinter 

class simpleapp_tk(): 
    def __init__(self,parent): 
     self.parent = parent 
     self.initialize() 

    def initialize(self): 
##  self.grid() 
     self.entry_variables=[] 
     for ctr in range(9): 
      entryVariable = tkinter.StringVar() 
      ## don't have to keep 10 instances of Entry class crap 
      ## because you are using a StringVar() 
      entry=tkinter.Entry(textvariable=entryVariable, width=75) 
      entry.grid(column=0,row=ctr+1,sticky='EW') 
      entry.bind("<Return>", partial(self.OnPressEnter, ctr)) 
      entryVariable.set(u"Enter text here.") 
      self.entry_variables.append(entryVariable) 

     tkinter.Button(text=u" DONE ", bg="lightblue", 
       command=self.parent.quit).grid(column=0,row=11) 

     """ 
     self.entryVariable2 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable2) 
     self.entry.grid(column=0,row=2,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable2.set(u"Enter text here.") 

     self.entryVariable3 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable3) 
     self.entry.grid(column=0,row=3,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable3.set(u"Enter text here.") 

     self.entryVariable4 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable4) 
     self.entry.grid(column=0,row=4,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable4.set(u"Enter text here.") 

     self.entryVariable5 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable5) 
     self.entry.grid(column=0,row=5,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable5.set(u"Enter text here.") 

     self.entryVariable6 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable6) 
     self.entry.grid(column=0,row=6,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable6.set(u"Enter text here.") 

     self.entryVariable7 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable7) 
     self.entry.grid(column=0,row=7,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable7.set(u"Enter text here.") 

     self.entryVariable8 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable8) 
     self.entry.grid(column=0,row=8,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable8.set(u"Enter text here.") 

     self.entryVariable9 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable9) 
     self.entry.grid(column=0,row=9,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable9.set(u"Enter text here.") 

     self.entryVariable10 = tkinter.StringVar() 
     self.entry = tkinter.Entry(self,textvariable=self.entryVariable10) 
     self.entry.grid(column=0,row=10,sticky='EW') 
     self.entry.bind("<Return>", self.OnPressEnter) 
     self.entryVariable10.set(u"Enter text here.") 

     Label = tkinter.Label(self,text=u" chemin table de parametrage ") 
     Label.grid(column=2,row=1) 

     Label = tkinter.Label(self,text=u" chemin axe ") 
     Label.grid(column=2,row=2) 

     Label = tkinter.Label(self,text=u" chemin bague exterieure ") 
     Label.grid(column=2,row=3) 

     Label = tkinter.Label(self,text=u" chemin bague interieure ") 
     Label.grid(column=2,row=4) 

     Label = tkinter.Label(self,text=u" chemin bague ") 
     Label.grid(column=2,row=5) 

     Label = tkinter.Label(self,text=u" chemin calle ") 
     Label.grid(column=2,row=6) 

     Label = tkinter.Label(self,text=u" chemin lame M2 ") 
     Label.grid(column=2,row=7) 

     Label = tkinter.Label(self,text=u" chemin lame M1 ") 
     Label.grid(column=2,row=8) 

     Label = tkinter.Label(self,text=u" chemin Patin1 ") 
     Label.grid(column=2,row=9) 

     Label = tkinter.Label(self,text=u" chemin Patin2 ") 
     Label.grid(column=2,row=10) 

     self.labelVariable = tkinter.StringVar() 
     label = tkinter.Label(self,textvariable=self.labelVariable, 
           anchor="w",fg="white",bg="black") 
     label.grid(column=0,row=0,columnspan=3,sticky='EW') 
     self.labelVariable.set(u"hello have a nice day") 

     self.grid_columnconfigure(0,weight=1) 
     self.resizable(True,False) 
     self.update() 
     self.geometry(self.geometry())  
     self.entry.focus_set() 
     self.entry.selection_range(0, tkinter.END) 

    def OnButtonClick(self): 
     self.labelVariable.set(self.entryVariable.get()+" (You clicked the button)") 
     self.entry.focus_set() 
     self.entry.selection_range(0, tkinter.END) 
     """ 

    def OnPressEnter(self, list_location, event=None): 
     dirs_list=['C:/Users/khalil/Desktop/PFE/pieces/axe.stp', 
        'C:/Users/khalil/Desktop/PFE/pieces/bague exterieur.stp', 
        'C:/Users/khalil/Desktop/PFE/pieces/bague interieure.stp', 
        'C:/Users/khalil/Desktop/PFE/pieces/bague.stp', 
        'C:/Users/khalil/Desktop/PFE/pieces/calle.stp', 
        'C:/Users/khalil/Desktop/PFE/pieces/lame inf.stp', 
        'C:/Users/khalil/Desktop/PFE/pieces/lame sup.stp', 
        'C:/Users/khalil/Desktop/PFE/pieces/patin 2.stp', 
        'C:/Users/khalil/Desktop/PFE/pieces/patin.stp'] 
     text_entered=self.entry_variables[list_location].get() 
     self.entry_variables[list_location].set("%s-->%s" % (
          text_entered, dirs_list[list_location])) 
##  self.labelVariable.set(self.entryVariable.get()+" (You pressed ENTER)") 
##  self.entry.focus_set() 
##  self.entry.selection_range(0, tkinter.END) 

if __name__ == "__main__": 
    top=tkinter.Tk() 
    app = simpleapp_tk(top) 
    top.mainloop()