簡體   English   中英

如何將 2 個 python 腳本與導入相結合?

[英]How do you combine 2 python scripts with import?

我有 2 個腳本,一個在 GUI 模塊 tkinter 中播放劊子手,另一個將作為主菜單。 這是劊子手之一。

def hangman():
    restart_var = True
    while restart_var:
        counter = 0
        ans = ''

        #assign input to answer and close window
        def confirmAnswer(ans,guessing_word_input):
            global answer
            answer = (guessing_word_input.get()).upper()
            first_window.destroy()

        #Random Word for solo play
        def soloPlay():
            random_word_list = ['COMPUTER','PYTHON','CODING','KEYBOARD','MOUSE','MONITOR','TELEVISION','POPCORN','BURGER','MUSIC','HANGMAN','FOOTBALL','TELEPHONE','SMARTPHONE','CAMERA']
            random.shuffle(random_word_list)
            global answer
            answer = random_word_list[0]
            first_window.destroy()

        #First window to enter word
        first_window = Tk()
        first_window.title('Enter Word')
        first_window.resizable(False,False)

        #text
        enter_word_label = Label(text = 'Enter Guessing Word (letters only, spaces allowed) : ')
        enter_word_label.pack()

        #input box
        guessing_word_input = Entry(first_window,show = '*',width = (50))
        guessing_word_input.pack(side = LEFT)

        #confirm button
        confirm_guess_button = Button(text = 'Enter',command = (lambda: confirmAnswer(ans,guessing_word_input)))
        confirm_guess_button.pack(side = LEFT)

        #solo play button
        solo_play_button = Button(text = 'Solo',command = soloPlay)
        solo_play_button.pack(side = RIGHT)

        first_window.mainloop()

        #open main window
        window = Tk()
        window.geometry('800x600')
        window.title('Hangman')
        window.resizable(False,False)
        answerList = []

        #turns string to list of letters
        for i in answer:
            answerList.append(i)

        #creates string of stars
        revealing_ans = []
        for i in range(len(answerList)):
            if answerList[i]!=' ':
                revealing_ans += '*'
            else:
                revealing_ans += '/'
        print(revealing_ans)

        #creates reavealing answer label
        revealing_ans_label = Label(text= revealing_ans,font = (None,50))
        revealing_ans_label.pack()
        print(len(revealing_ans),' letters\n')

        #create exit button
        exit_button = Button(text = 'EXIT',command = exit)
        exit_button.place(x = 20,y =20)

        hangman_canvas = Canvas(window,width = 400,height = 400,)
        hangman_canvas.place(x=200,y=70)

        #class for life and turn counter
        class turn:
            def __init__(self,num):
                self.num = num

            def lifeLost(self):
                self.num -=1

            def turn(self):
                self.num += 1

        #life counter label
        lifenum = turn(8)
        life_label_text = 'Lives: ' + str(lifenum.num)
        life_label = Label(text = life_label_text,font = (None, 20),foreground = 'red')
        life_label.place(x = 650,y = 50)

        #turn counter label
        num_of_turns = turn(0)
        num_of_turns_text = 'Turns: ' + str(num_of_turns.num)
        num_of_turns_label = Label(text = num_of_turns_text,font = (None, 20))
        num_of_turns_label.place(x = 650,y = 100)

        #checks if guess is in answer, updates turn and life counter, disables button pressed, ends game if complete or no lives left
        class button:
            def __init__(self,letter,button):
                num_of_turns.turn()
                num_of_turns_text = 'Turns: ' + str(num_of_turns.num)
                num_of_turns_label.config(text = num_of_turns_text)
                self.letter = letter
                self.button = button
                button.config(state = 'disabled',disabledforeground = 'red2')
                print(letter)
                counter =0
                #check for letter
                for i in range(len(answerList)):
                    if letter == answerList[i]:
                        revealing_ans[i]=answerList[i]
                        counter += 1
                if counter > 0:
                    print('Correct')
                    #update revealing answer
                    revealing_ans_label.config(text = revealing_ans)
                    #checks for *, ends game
                    if '*' not in revealing_ans:
                        endGame()
                else:
                    print('Wrong')
                    lifenum.lifeLost()
                    life_label_text = 'Lives: ' + str(lifenum.num)
                    life_label.config(text = life_label_text)

                    if lifenum.num == 7:
                        hangman_canvas.create_line(0,300,80,300)
                    if lifenum.num == 6:
                        shape2 = hangman_canvas.create_line(40,40,40,300)
                    if lifenum.num == 5:
                        shape3 = hangman_canvas.create_line(0,40,300,40)
                    if lifenum.num == 4:
                        shape4 = hangman_canvas.create_line(300,40,300,100)
                    if lifenum.num == 3:
                        shape5 = hangman_canvas.create_oval(260,100,340,180)
                    if lifenum.num == 2:
                        shape6 = hangman_canvas.create_line(300,180,300,260)
                    if lifenum.num == 1:
                        shape7 = hangman_canvas.create_line(280,220,300,200,320,220)
                    if lifenum.num == 0:
                        shape8 = hangman_canvas.create_line(280,280,300,260,320,280)
                        endGame()


        #final window, shows answer in red or green, play again, exit buttons
        def endGame():
            print(answer)
            window.destroy()
            final_window = Tk()
            final_window.title('GAME ENDED')
            final_message = Label(text = 'GAME ENDED')
            final_message.pack()
            answer_label = Label(final_window,text= answer,font = (None,50))
            if lifenum.num == 0:
                answer_label.config(foreground = 'red')
            else:
                answer_label.config(foreground = 'green')
            answer_label.pack()
            exit_button_end = Button(final_window,text = 'EXIT',command = (lambda: exit()))
            exit_button_end.pack()

            play_again_button = Button(text = 'Play Again',command = final_window.destroy)
            play_again_button.pack()

        #create frame for buttons
        button_frame = Frame()
        button_frame.place(x=0, y = 500)

        buta = Button(button_frame,text = 'A',command =(lambda: button('A',buta)),width = 3)
        buta.pack(side = LEFT)
        butb = Button(button_frame,text = 'B',command =(lambda: button('B',butb)),width = 3)
        butb.pack(side = LEFT)
        butc = Button(button_frame,text = 'C',command =(lambda: button('C',butc)),width = 3)
        butc.pack(side = LEFT)
        butd = Button(button_frame,text = 'D',command =(lambda: button('D',butd)),width = 3)
        butd.pack(side = LEFT)
        bute = Button(button_frame,text = 'E',command =(lambda: button('E',bute)),width = 3)
        bute.pack(side = LEFT)
        butf = Button(button_frame,text = 'F',command =(lambda: button('F',butf)),width = 3)
        butf.pack(side = LEFT)
        butg = Button(button_frame,text = 'G',command =(lambda: button('G',butg)),width = 3)
        butg.pack(side = LEFT)
        buth = Button(button_frame,text = 'H',command =(lambda: button('H',buth)),width = 3)
        buth.pack(side = LEFT)
        buti = Button(button_frame,text = 'I',command =(lambda: button('I',buti)),width = 3)
        buti.pack(side = LEFT)
        butj = Button(button_frame,text = 'J',command =(lambda: button('J',butj)),width = 3)
        butj.pack(side = LEFT)
        butk = Button(button_frame,text = 'K',command =(lambda: button('K',butk)),width = 3)
        butk.pack(side = LEFT)
        butl = Button(button_frame,text = 'L',command =(lambda: button('L',butl)),width = 3)
        butl.pack(side = LEFT)
        butm = Button(button_frame,text = 'M',command =(lambda: button('M',butm)),width = 3)
        butm.pack(side = LEFT)
        butn = Button(button_frame,text = 'N',command =(lambda: button('N',butn)),width = 3)
        butn.pack(side = LEFT)
        buto = Button(button_frame,text = 'O',command =(lambda: button('O',buto)),width = 3)
        buto.pack(side = LEFT)
        butp = Button(button_frame,text = 'P',command =(lambda: button('P',butp)),width = 3)
        butp.pack(side = LEFT)
        butq = Button(button_frame,text = 'Q',command =(lambda: button('Q',butq)),width = 3)
        butq.pack(side = LEFT)
        butr = Button(button_frame,text = 'R',command =(lambda: button('R',butr)),width = 3)
        butr.pack(side = LEFT)
        buts = Button(button_frame,text = 'S',command =(lambda: button('S',buts)),width = 3)
        buts.pack(side = LEFT)
        butt = Button(button_frame,text = 'T',command =(lambda: button('T',butt)),width = 3)
        butt.pack(side = LEFT)
        butu = Button(button_frame,text = 'U',command =(lambda: button('U',butu)),width = 3)
        butu.pack(side = LEFT)
        butv = Button(button_frame,text = 'V',command =(lambda: button('V',butv)),width = 3)
        butv.pack(side = LEFT)
        butw = Button(button_frame,text = 'W',command =(lambda: button('W',butw)),width = 3)
        butw.pack(side = LEFT)
        butx = Button(button_frame,text = 'X',command =(lambda: button('X',butx)),width = 3)
        butx.pack(side = LEFT)
        buty = Button(button_frame,text = 'Y',command =(lambda: button('Y',buty)),width = 3)
        buty.pack(side = LEFT)
        butz = Button(button_frame,text = 'Z',command =(lambda: button('Z',butz)),width = 3)
        butz.pack(side = LEFT)
        window.mainloop()

我需要能夠導入此文件並運行 hangman() function,但是它顯示了一個錯誤,即 Tk() 未定義。 兩個文件都在同一個文件夾中。 我嘗試的是:

from tkinter import *
import random
from hangman import * 
hangman()

您能否建議其他腳本應該是什么?

你的電腦有沒有安裝Tkinter; 因為它在我的計算機上運行良好,即使用 Tk()。 您使用的是哪個 python 版本?

我自己已經解決了。 我將hangman文件中需要的所有導入都移到了hangman文件的頂部,並且在菜單文件中,我只使用了import hangman來導入我的腳本。

所以我的劊子手文件:

from tkinter import *
import random
def hangman():
    etc.

我的菜單:

from hangman import *
hangman()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM