PyQT5:无法让路径变量在其功能之外工作

问题描述

我正在尝试将所选路径保存在变量 source_folder 中。 虽然如果我在函数中打印变量它可以工作,但它在函数外使用。

这是我的代码

from flask import Flask,render_template,request,redirect,url_for
from flask_sqlalchemy import sqlAlchemy


app=Flask(__name__)
app.config["sqlALCHEMY_DATABASE_URI"]=....
db=sqlAlchemy(app)
class Data(db.Model):
    __tablename__='data'

    id=db.Column(db.Integer,primary_key=True,unique=True)
    author_=db.Column(db.String(120))
    year_=db.Column(db.Integer)
    title_=db.Column(db.String(120),unique=True)

    def __init__(self,author_,year_,title_):
        self.author_=author_
        self.year_=year_
        self.title_=title_

class User(db.Model):
    __tablename__='user'

    id=db.Column(db.Integer,unique=True)
    user_=db.Column(db.String(120))
    email_=db.Column(db.String(120))
    password_=db.Column(db.String(120))

    def __init__(self,user_,email_,password_):
        self.username=user_
        self.email=email_
        self.password=password_

db.create_all()
db.session.query(User).filter(User.username==username).scalar()

谢谢你们。

解决方法

InitUI() 只会在创建类对象时执行。所以在按钮后按下 printInitUI() 指令将不起作用。这根本不是那个 var 的作用域的问题。

您可以通过添加一个新函数并从 open_dialog_box

调用它来对此进行测试
def printSourceFolder(self):
    print(self.source_folder)

def open_dialog_box(self):
        self.source_folder = QFileDialog.getExistingDirectory(
            self,'Select the source Folder:','C:\\',QtWidgets.QFileDialog.ShowDirsOnly)
        print(self.source_folder) # here it works
        self.printSourceFolder()