如何从另一个文件函数中获取值?python

如何从另一个文件函数中获取值?python,python,tkinter,Python,Tkinter,这里有人能帮忙吗? 我有两个名为game.py和settings.py的文件,我只想从设置中获取一个值用于游戏,但我不知道我做错了什么 我想要的值在函数bbb中 THIS IS MY SETTINGS from tkinter import* import game class Application(Frame): def __init__ (self, master): Frame.__init__(self,master) self.grid()

这里有人能帮忙吗? 我有两个名为
game.py
settings.py
的文件,我只想从设置中获取一个值用于游戏,但我不知道我做错了什么

我想要的值在函数bbb中

THIS IS MY SETTINGS
from tkinter import*
import game

class Application(Frame):

    def __init__ (self, master):
        Frame.__init__(self,master)
        self.grid()
        self.create_widgets()

    def bbbbb(self):
        self.xr = self.ball_numbers.get()
        print("printing...", self.xr)
        return self.xr        

    def create_widgets(self):

        self.ball_numbers = IntVar()

        Label(self,text = "Select how many balls you wish to play:").grid()

        Radiobutton(self, text = "1 Ball", variable = self.ball_numbers, value = 1, command = self.bbbbb).grid ()
        Radiobutton(self, text = "2 Balls", variable = self.ball_numbers, value = 2, command = self.bbbbb).grid ()
        Radiobutton(self, text = "3 Balls", variable = self.ball_numbers, value = 3, command = self.bbbbb).grid ()


settings_window = Tk()
settings_window.title(" THE BOUNCER  -  Settings")
settings_window.geometry("600x600")
app = Application(settings_window)
settings_window.mainloop()
我需要在类处理设置中,在函数创建球数中使用该值

这是我的游戏

from livewires import games, color
from tkinter import*
import settings
import random

games.init(screen_width = 735, screen_height = 350, fps = 35)

class Bounce(games.Sprite):
    def update(self):

        if self.right > games.screen.width or self.left < 0: 
            self.dx = -self.dx

        if self.top < 0:
            self.dy = -self.dy

        if self.bottom == 315 and self.overlapping_sprites: 
            self.dy = -self.dy


class Bar_moving(games.Sprite):
    def update(self):   

        self.x = games.mouse.x  
        self.y = 315

class handling_settings():

    self.yr = bbbbb()
    print("printing number from settings  ", self.yr)

    def create_ball_numbers(self):
        print("inside def", self.yr)



def main():

    background = games.load_image("BG.jpg", transparent = False)
    games.screen.background = background

    call = handling_settings()
    call.create_ball_numbers()

    bar_small = games.load_image("bar_small.jpg", transparent = False)
    the_bar_small = Bar_moving(image = bar_small, x = games.mouse.x)

    games.screen.add(the_bar_small)
    games.mouse.is_visible = False
    games.screen.event_grab = True

    games.screen.mainloop()


main()    


I think I am not using on the right way IMPORT on top of the file.... keeping appearing this msg...

File "C:\Users\Bruno\Desktop\DIT\Object Oriented Programming\GAME - Assignment\game.py", line 3, in <module>
    from settings import bbbbb
ImportError: cannot import name bbbbb
从livewires导入游戏,颜色
从tkinter进口*
导入设置
随机输入
games.init(屏幕宽度=735,屏幕高度=350,fps=35)
类反弹(游戏.精灵):
def更新(自我):
如果self.right>games.screen.width或self.left<0:
self.dx=-self.dx
如果self.top<0:
self.dy=-self.dy
如果self.bottom==315且self.overlapping_精灵:
self.dy=-self.dy
类酒吧移动(游戏.精灵):
def更新(自我):
self.x=games.mouse.x
self.y=315
类处理\u设置():
self.yr=bbb()
打印(“从设置打印号码”,self.yr)
def创建球号(自身):
打印(“内部定义”,自年)
def main():
背景=游戏。加载图片(“BG.jpg”,透明=假)
games.screen.background=背景
call=处理_设置()
呼叫。创建球号()
bar\u small=games.load\u图像(“bar\u small.jpg”,transparent=False)
_bar\u small=bar\u移动(image=bar\u small,x=games.mouse.x)
games.screen.add(小条)
games.mouse.is_visible=False
games.screen.event_grab=True
games.screen.mainloop()
main()
我认为我没有使用正确的方法在文件顶部导入。。。。不断出现这个消息。。。
文件“C:\Users\Bruno\Desktop\DIT\Object-Oriented Programming\GAME-Assignment\GAME.py”,第3行,在
从设置导入BBB
导入错误:无法导入名称BBB

如果我分别运行这两个文件。。。没关系。。。但是当我试图在
设置中的
bbbbb
函数中获取值时,我被卡住了…

您有一个循环导入<代码>设置
导入
游戏
,它导入
设置
。此时,两个模块都没有完全完成初始化(除导入行之外的任何操作都尚未运行)

实际上,您没有在
设置中使用
游戏
模块,因此只需从
设置.py中删除
导入游戏
行即可

game.py
中,您导入了
设置
名称
bbbbb
是该模块中
应用程序
类的一个属性。该行:

self.yr = bbbbb()
我永远不会在这里工作

但是,您绝对不应该在
设置中创建新的
Tk()
根窗口;在Tk应用程序中只能有一个主循环。使
设置
成为由
游戏中的主应用程序触发的对话框窗口


因此,要获得
bbbbb()
结果,您需要生成设置对话框,让用户与其交互,然后在用户再次关闭对话框时检索
球号设置。

首先不要执行任何循环导入,在settings.py中,不需要导入游戏模块

由于BBB是类应用程序的一个函数,因此不能直接调用它,要调用它,我们需要一个同一类的对象,该对象已作为

app = Application(settings_window)
因此,在module game.py中,只需使用app对象调用bbb()


尝试
self.yr=app.bbbbbbb()
如果您试图直接使用类函数bbbbb(),这是允许的。您需要使用类对象(例如app)调用它。为此,您可以将变量放入内置程序中,然后使用它。“名称‘app’未定义”不起作用我刚删除,但当我现在运行游戏时,它会说“名称错误:名称‘bbbbb’未定义”
self.yr = settings.app.bbbbb()