в <string>'требуется строка в качестве левого операнда, а не StringVar - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь использовать self.search, чтобы определить, какие строки из моего файла .txt будут отображаться, то есть: запись "Blue", и она будет печатать все строки с синим цветом в тексте.
Каждая кнопкаищет другой файл .txt.

Исключение в обратном вызове Tkinter (последний вызов был последним): файл "C: \ Users \ gblmac \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib\ tkinter__init __. py ", строка 1702, в вызов return self.func (* args) Файл" D: \ Users \ gblmac \ Desktop \ Python Programs \ Testing \ GUI class и init .py ", строка 37, в searchvision, если self.usertext в строке: TypeError: 'in' требует строку в качестве левого операнда, а не StringVar

from tkinter import *

class App:
    def __init__(self):
        self.master = Tk()
        self.master.title("PM and Vision Finder")
        self.master.configure(bg="orange")
        self.master.geometry("500x500")
        self.mybutton1 = Button(self.master, text="Vision Names", command=self.searchvision)

        self.mybutton1.grid(row=0, column=0)

        self.mybutton2 = Button(self.master, text="PM",
                           command=self.searchpm)

        self.mybutton2.grid(row=1, column=0)

        self.usertext = StringVar()
        self.initialtext = StringVar()
        self.initialtext.set ("Type Here")

        self.myentry = Entry(self.master, textvariable=self.initialtext)
        self.myentry.grid(row=2, column=0)

    def searchvision(self):

        self.search = open(r"D:\Users\gblmac\Desktop\Python programs\Vision Names\Vision Names.txt")
        for line in self.search:
            if self.usertext in line:
                print (line)

    def searchpm(self):

        self.search = open(r"D:\Users\gblmac\Desktop\Python programs\PMs\PMs.txt")
        for line in self.search:
            if self.usertext in line:
                print (line)

        print (self.usertext.get())


    self.master.mainloop()

App()

1 Ответ

0 голосов
/ 02 июня 2018

in требуется строка в качестве левого операнда

Для этого

if self.usertext in line:

не StringVar

Посколькулевая переменная - StringVar

self.usertext = StringVar()

Вам необходимо использовать

if self.usertext.get() in line:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...