Я хотел бы передать значение, введенное в текстовое поле для программы Python - PullRequest
0 голосов
/ 07 февраля 2012

Я написал этот код

app = Tk()
app.title('Myapp')
app.geometry('260x100+50+50')

labelText =StringVar()
labelText.set('Insert the version you want to check')
label1 = Label(app, textvar=labelText, height=4)
label1.pack()

stringadacercare = StringVar(None)
lastringa = Entry(app, textvar=stringadacercare)
lastringa.place(x=30, y=40, width=200)


progressbar = ttk.Progressbar(orient=HORIZONTAL, length=260, mode='determinate')
progressbar.pack(side='bottom')
progressbar.start()

app.mainloop()

Я бы хотел передать ввод, взятый текстовым полем в эту программу вместо raw_input, чтобы связать его с testV

 import csv
 import re
 import os
 testV = raw_input('Insert the version you want to find: ')
 fileobj = csv.reader(open('c:\\paths1.csv', 'rb'), delimiter=' ', quotechar='|')
 for row in fileobj:

for x in row:
    with open(x) as f:
        for line in f:

            if re.match(testV, line):
                print 'The version match: '+ line
            else:
                print 'wrong version'     
    filesize= os.path.getsize(x)
print 'The file size is :'+ str(filesize) +' bytes';

Кто-нибудь может мне помочь? Заранее спасибо !!!!!

1 Ответ

0 голосов
/ 07 февраля 2012

Вы уверены, что хотите использовать второй скрипт в качестве отдельной программы?При необходимости вы можете использовать модуль подпроцесса для передачи переменной в качестве аргумента командной строки.

Настройте графический интерфейс для использования кнопки и обратного вызова примерно так:

import subprocess
from Tkinter import *
import ttk

def btnCallback():
    #this is the path to your other script
    cmdpath = '/path/to/test.py'

    #extract the textbox variable
    var = stringadacercare.get()

    progressbar.start()

    #pass the variable to the command line
    proc = subprocess.popen([cmdpath,var])

    #block while the subprocess executes
    proc.wait()

    progressbar.stop()

app = Tk()
app.title('Myapp')
app.geometry('260x100+50+50')

labelText =StringVar()
labelText.set('Insert the version you want to check')
label1 = Label(app, textvar=labelText, height=4)
label1.pack()

stringadacercare = StringVar(None)
lastringa = Entry(app, textvar=stringadacercare)
lastringa.place(x=30, y=40, width=200)

progressbar = ttk.Progressbar(orient=HORIZONTAL, length=260, mode='determinate')
progressbar.pack(side='bottom')

#use a button to execute the subprocess
buttonOK = Button(app,text='GO',command=btnCallback)
buttonOK.pack(side='bottom')

app.mainloop() 

Перестройте структуруТестовый скрипт для принятия аргументов командной строки.Вы также можете импортировать это в ваше графическое приложение и вызывать основную функцию, передавая переменную напрямую.

import csv
import re
import os

#need the sys module to get the command line args
import sys

def main(testV):
    fileobj = csv.reader(open('c:\\paths1.csv', 'rb'), delimiter=' ', quotechar='|')

    for row in fileobj:
        for x in row:
            with open(x) as f:
                for line in f:
                    if re.match(testV, line):
                        print 'The version match: '+ line
                    else:
                        print 'wrong version'
                        filesize= os.path.getsize(x)
                        print 'The file size is :'+ str(filesize) +' bytes'

if __name__=='__main__':
    #get the first command line argument and pass it to main
    testV = sys.argv[1]
    main(testV)

Если вы хотите использовать тестовую подпрограмму в качестве модуля вместо командной строки, вы можете добавитьимпортируйте оператор для вашего тестового модуля и вызывайте его из кнопки обратного вызова.

...
import mytestmodule

def btnCallback():
    #extract the textbox variable
    var = stringadacercare.get()

    progressbar.start()

    #call the main function from the test module
    mytestmodule.main(var)

    progressbar.stop()

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...