После входа в систему моя программа не будет отображать мой следующий экран. Вот что у меня есть до сих пор. У меня есть логин:
import sys, os, boto3, threading, logging, math, time, re
from botocore.exceptions import ClientError
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt, QUrl
if __name__ == '__main__':
app = QApplication(sys.argv)
form = LoginForm()
form.show()
sys.exit(app.exec_())
class LoginForm(QWidget):
def __init__(self):
super().__init__()
self.resize(300, 50)
layout = QGridLayout()
label_name = QLabel('<font size="4"> Username: </font>')
self.lineEdit_username = QLineEdit()
self.lineEdit_username.setPlaceholderText('Please enter your username')
layout.addWidget(label_name, 0, 0)
layout.addWidget(self.lineEdit_username, 0, 1)
buttonLogin = QPushButton('Login')
buttonLogin.clicked.connect(self.checkPass)
layout.addWidget(buttonLogin, 1, 0, 1, 2)
layout.setRowMinimumHeight(2, 20)
self.setLayout(layout)
def checkPass(self):
msg = QMessageBox()
if self.lineEdit_username.text() != '':
self.user = self.lineEdit_username.text()
demo = AppDemo(self.user)
demo.show()
demo.userLabel.setText('<font size="5"> Current User: ' + self.user + '</font>')
form.hide()
else:
msg.setText('Please Enter a Username')
msg.exec_()
Как вы можете видеть, после того, как я нажимаю кнопку с введенным именем пользователя, он вызывает demo.show ()
class AppDemo(QtWidgets.QWidget):
def __init__(self, user):
super().__init__()
self.user = user
self.setWindowTitle("Data Ingest App")
self.resize(1200, 600)
self.currentFileLabel = QLabel(self)
self.currentFileLabel.setText("Drag and Drop Folders into the box")
self.listbox_view = ListBoxWidget(self)
self.uploadBtn = QPushButton('Upload Files', self)
self.percentageBar = QtWidgets.QProgressBar()
self.bucketName = getBucketName()
self.storageDomain = getStorageDomain()
self.toolID = getTool()
lay = QtWidgets.QGridLayout(self)
self.userLabel = QtWidgets.QLabel("")
lay.addWidget(self.userLabel, 0, 0)
lay.addWidget(QtWidgets.QLabel('<font size="5"> Tool ID: ' + self.toolID + '</font>'), 0, 2)
lay.addWidget(self.listbox_view, 1, 0, 1, 3)
lay.addWidget(self.currentFileLabel, 2, 1)
lay.addWidget(self.percentageBar, 3, 1)
lay.addWidget(self.uploadBtn, 3, 0)
self.listbox_view.setAlternatingRowColors(True)
self.qs3 = S3Worker()
self.qs3.percentageChanged.connect(self.percentageBar.setValue)
self.uploadBtn.clicked.connect(self.start_upload)
def start_upload(self):
if self.listbox_view.count() != 0:
self.bucketFind()
firstFile = QListWidgetItem(self.listbox_view.item(0).text())
firstLen = len(firstFile.text().split("/"))
for i in range(self.listbox_view.count()):
path = QListWidgetItem(self.listbox_view.item(i).text())
splitName = path.text().split("/")
if len(splitName) > firstLen:
displayName = ""
difference = len(splitName) - firstLen
if os.path.exists(path.text()):
displayName += self.user + "/" + self.toolID()
for dif in range(difference + 1, 0, -1):
displayName += "/" + splitName[len(splitName) - dif]
self.qs3.upload(path.text(), self.bucketName, displayName)
else:
if os.path.exists(path.text()):
displayName = self.user + "/" + self.toolID() + "/" + splitName[len(splitName) - 1]
self.currentFileLabel.setText("Current File Being Uploaded: " + path.text())
self.qs3.upload(path.text(), self.bucketName, displayName)
self.uploadBtn.setText("Upload more Files")
self.currentFileLabel.setText("Completed")
else:
print("No File inputted")
def bucketFind(self, region=None):
try:
if region is None:
s3 = boto3.client(
's3', endpoint_url=self.storageDomain)
s3.create_bucket(Bucket=self.bucketName)
except ClientError as e:
logging.error(e)
return False
Я получаю большую часть своей информации из файла setting.config, который находится в той же папке. Эти файлы содержат BucketName, toolID и storageDomain. Вот пример текста в ведре файла: Users tool_shortname: 123 storageDomain: https://username.url
Я добавил эти методы stati c, и они перестали работать, но я не могу поймите почему.
def getStorageDomain():
try:
with open('settings.config', 'r') as read_obj:
for line in read_obj.readlines():
if 'storageDomain: ' in line:
storageDomain = line.partition("storageDomain: ")[2]
return storageDomain
except OSError as e:
print("Error in file")
return "NO FILE setting.config"
def getBucketName():
try:
with open('settings.config', 'r') as read_obj:
for line in read_obj.readlines():
if 'bucket: ' in line:
bucket = line.partition("bucket: ")[2]
return bucket
except OSError as e:
print("Error in file")
return "No setting.config file could"
def getTool():
try:
with open('settings.config', 'r') as read_obj:
for line in read_obj:
if 'tool_shortname: ' in line:
toolID = line.partition("tool_shortname: ")[2]
return toolID
except OSError as e:
print("Error in file")
return "No setting.config file could"