わかりましたので、Tkinter (3.3) を使用してプログラムを作成しています。ユーザーが名前を送信すると、その名前がデータベースcards.cdb
で検索され、その情報が出力され、オンライン ソースと比較されますurl
。関数 を使用して、指定されたものの画像も表示しますpicture
。そのため、ボタンをクリックすると関数が呼び出され、そのbuttonclicked
関数が他の 2 つの関数を呼び出します。
from tkinter import *
import urllib
import urllib.request
from bs4 import BeautifulSoup
import Pydeck
import sys
from collections import defaultdict
root = Tk()
name=""
def buttonclicked():
name()
picture(text)
def name():
all_lists=[] #all lists
text = inputfield.get()
Pydeck.loadDatabase('C://Users/Trevor/Desktop/Y-In Process/cards.cdb')
cardName = Pydeck.getCardsFromName(text)
if not cardName == "":
c = Pydeck.Card(cardName)
tex.insert(END, c.name)
level="\nLevel %s" % c.level + " " + c.attribute + " " + c.typestring
tex.insert(END, level)
atk="\nAtk: %s" % c.attack
tex.insert(END, atk)
defe="\nDef: %s" % c.defense
tex.insert(END, defe)
typestring='\n%s' %c.typestring
desc='\n%s' %c.description
seperator='\n--------------------\n'
tex.insert(END, typestring)
tex.insert(END, desc)
tex.insert(END,seperator)
#--
url_name=c.name.replace(' ','_')
url=('http://yugioh.wikia.com/wiki/Card_Tips:{}'.format(url_name))
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page.read())
content = soup.find('div',id='mw-content-text')
links = content.findAll('a')
link_lists = defaultdict(list)
all_lists.append([link.get("title") for link in links])
common_links = set(all_lists[0]).intersection(*all_lists[1:])
omit_list=['None', 'Special Summon', 'Edit Searchable by section', 'Edit Special Summoned from the hand by section','Edit Special Summoned from the Deck by section','Edit Special Summoned from the Graveyard by section','Edit Easier Tribute Summons section','Edit Generic Tips section','Edit Traditional Format section']
final=set(common_links)-set(omit_list)
tex.insert(END,final)
#--
tex.see(END) # Scroll if necessary
def picture(text):
gifdir = "C:\\Users\\Trevor\\Desktop\\Y-In Process\\Pictures\\"
Pydeck.loadDatabase('C://Users/Trevor/Desktop/Y-In Process/cards.cdb')
cardName = Pydeck.getCardsFromName(text)
if not cardName == "":
c=Pydeck.Card(cardName)
filename='{}.gif' .format(c.cardID)
img = PhotoImage(file=gifdir+filename)
can = Canvas(root)
can.pack(fill=BOTH,side='left')
can.config(width=img.width(), height=img.height())
can.create_image(2, 2, image=img, anchor=NW)
tex=Text(root)
tex.pack(side='right')
inputfield = Entry(root)
inputfield.pack(side='bottom')
but = Button(root,text="Enter Name", command = buttonclicked) #Calls name function
but.pack(side='bottom')
text = inputfield.get()
root.mainloop()
エラーが発生します
filename='{}.gif' .format(c.cardID)
UnboundLocalError: local variable 'c' referenced before assignment
c
作成されていないことを意味しますが、picture
関数で定義しますが、認識しません。
私が困惑しているので、誰か提案がありますか?