我想访问基于用户选择在我的主窗口上创建的列表,在我的第二个窗口上。你知道吗
列表是在MainWindow
的on_cc_pick
方法下创建的。列出creditcards
。你知道吗
在第二个窗口中,我想在CreditCardForm
上访问它
当我尝试MainWindow.creditcards
或MainWindow.creditcardsb
时,它告诉我对象没有属性creditcards/b
当我尝试在MainWindow类下执行全局变量时:
class MainWindow(QtWidgets.QWidget):
creditcards = []
它总是默认为空列表。你知道吗
这是我的代码,本质上我想访问名为creditcardsb
的列表,该列表创建于MainWindow
类的def on_cc_pick(self,text):
类的CreditCardForm
类的def savecsv(self):
下
class AddCreditCard(QtWidgets.QMainWindow):
def __init__(self, parent = None):
super(AddCreditCard, self).__init__(parent)
creditcardform = CreditCardForm(self)
self.setCentralWidget(creditcardform)
class CreditCardForm(QtWidgets.QWidget):
def savecsv(self):
**print(MainWindow.creditcardsb)**
def __init__(self, parent):
super(CreditCardForm, self).__init__(parent)
self.addname = QtWidgets.QPushButton('Save')
self.connect(self.addname,QtCore.SIGNAL("clicked()"), self.savecsv)
class MainWindow(QtWidgets.QWidget):
def CreateCCForm(self):
self.addwindow.show()
def on_cc_pick(self, text):
NickName = []
Account = []
with open(refdirectory + '/' + str(text) + '.csv') as csvDataFile:
csvReader = csv.reader(csvDataFile)
for row in csvReader:
NickName.append(row[0])
Account.append(row[1])
**creditcardsb = list(zip(NickName,Account))
self.creditcards = creditcardsb**
def __init__(self, parent = None):
super(MainWindow,self).__init__(parent)
self.pickcard = QtWidgets.QComboBox(self)
CreditCardNames = ['cc1','cc2','cc3']
for cc in CreditCardNames:
self.pickcard.addItem(cc)
self.addcard = QtWidgets.QPushButton('Add Card')
self.pickcard.activated[str].connect(self.on_cc_pick)
self.connect(self.addcard, QtCore.SIGNAL("clicked()"),self.CreateCCForm)
self.addwindow = AddCreditCard(self)
这些是我正在使用的导入,并非都与我的问题相关:
from subprocess import Popen
from selenium import webdriver
from bs4 import BeautifulSoup
import string
import time
import random
import csv
import pandas as pd
from pick import pick
import requests
import re
import urllib.request
from urllib.request import urlopen
from selenium.webdriver.common.by import By
from tkinter import *
import tkinter as tk
import tkinter.filedialog as filedialog
import os
import pyodbc
from decimal import *
import sys
from PySide2 import QtCore, QtGui, QtWidgets
from datetime import datetime, date
from decimal import Decimal
不要使用静态变量,因为要传输的属性不依赖于类,而是依赖于对象。所以正确的方法是创建一个更新窗口数据的方法。此外,假设
CreditCardForm
始终是AddCreditCard
的子级,您可以使用parentWidget()
从CreditCardForm
获得AddCreditCard
。你知道吗相关问题 更多 >
编程相关推荐