0
私は以下のコードを持っていて、テキストボックスに文字列を入力するとスレッドを開始したいと思いますが、プログラムを実行するとスレッドが実行を開始します。スレッドを作成するメソッドが実行されたときにスレッドを開始すべきではありませんか?スレッドがボタンイベントなしで起動するTkinter
class FuncThread(threading.Thread):
def __init__(self, target, *args):
self._target = target
self._args = args
threading.Thread.__init__(self)
def run(self):
self._target(*self._args)
class BuildGui():
def show_entry_fields(self,
release_version=None):
print("Release Version: %s\n" % release_version)
pattern = re.compile('^\d*\.\d*\.\d*$')
if re.match(pattern, release_version):
self.thread_execute_build(release_version=release_version)
else:
print "Enter a valid release version (e.g. 5.3.2)"
e1.delete(0, 'end')
def execute_build(self,
release_version=None):
cmd_build_jenkins = 'java -jar jenkins-cli.jar -s http://xyz:8080/ build "New ESW build" -s -p "release_version"=' + str(release_version)
os.system(cmd_build_jenkins)
def thread_execute_build(self,
release_version=None):
self.build_thread = FuncThread(self.execute_build, release_version)
self.build_thread.start()
if __name__ == '__main__':
master = Tk()
Label(master, text="Release Version").grid(row=0)
e1 = Entry(master)
e1.grid(row=0, column=1)
gui = BuildGui()
Button(master, text='Quit', command=master.quit).grid(row=3, column=0, sticky=W, pady=4)
Button(master, text='Show', command=gui.show_entry_fields(release_version=e1.get())).grid(row=3, column=1, sticky=W, pady=4)
mainloop()
ありがとうございました! – Brunisboy