2017-05-31 13 views
0

私のQComboBox入力データの後に変更/更新されませんでした。私はaddItems機能、それをコピーし、リストから値を使用する場合、それはリストからの参照を保存していないため、入力データの後にQComboxBoxの値が変更されませんでした

いただきました!私はリフレッシュQComboBox

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

class MyClass(object): 
    def __init__(self, device_type=None, ip=None, username=None, password=None, secret=None, command=None): 
     self.device_type = device_type 
     self.ip = ip 
     self.username = username 
     self.password = password 
     self.secret = secret 
     self.command = command 

device_list = [] 
ip_list = [] #----- object to load 

def addDevice(): 
    device_type = str(cb_device_list.currentText()) 
    ip = le_ip.text() 
    username = le_username.text() 
    password = le_password.text() 
    secret = le_enable.text() 
    command = 'show tech' 
    device_list.append(MyClass(device_type, ip, username, password, secret, command)) 
    ip_list.append(ip) 

################################## 
app = QApplication(sys.argv) 
app.setStyle('cleanlooks') 
window = QWidget() 
window.setWindowTitle("Network Automation") 
############################# Input IP 

# Device Type 
lb_device_list = QLabel(window) 
lb_device_list.setText('Device Type') 
cb_device_list = QComboBox(window) 
cb_device_list.addItem('cisco_ios') 
cb_device_list.addItem('cisco_s300') 

lb_ip = QLabel(window) 
bt = QPushButton(window) 
btadd = QPushButton(window) 

# Ip Device 
lb_ip.setText('IP Address') 
le_ip = QLineEdit(window) 
le_ip.setText('') 
le_ip.setPlaceholderText('Input Device IP') 
le_ip.setFixedWidth(150) 

# username 
lb_username = QLabel(window) 
le_username = QLineEdit(window) 
lb_username.setText('Username') 
le_username.setText('') 
le_username.setPlaceholderText('Input Username') 
le_username.setFixedWidth(150) 

# password 
lb_password = QLabel(window) 
le_password = QLineEdit(window) 
lb_password.setText('Password') 
le_password.setText('') 
le_password.setPlaceholderText('Input Password') 
le_password.setFixedWidth(150) 

# Privilage Password 
lb_enable = QLabel(window) 
lb_enable.setText('Privilege Mode Password') 
le_enable = QLineEdit(window) 
le_enable.setText('') 
le_enable.setPlaceholderText('Input Enable Password') 
le_enable.setFixedWidth(150) 

bt.setText('Generate') 
bt.setFixedWidth(70) 

btadd.setText('Add') 

line = QFrame(window) 
line.setFrameShape(QFrame.VLine) 
line.setFrameShadow(QFrame.Sunken) 
line.setLineWidth(3) 

########################### Layout Ip Device List 

lb3 = QLabel(window) 
lb3.setText('IP Device List') 
combobox_ip_list = QComboBox(window) 
combobox_ip_list.setFixedWidth(170) 
combobox_ip_list.addItems(ip_list) # Didn't load after input the data 

############################## SubLayout and Layout 
hblayout = QHBoxLayout() 
hblayout.addWidget(bt) 
hblayout.addWidget(btadd) 

sublayout = QVBoxLayout() 
sublayout.addWidget(lb_device_list) 
sublayout.addWidget(cb_device_list) 
sublayout.addWidget(lb_ip) 
sublayout.addWidget(le_ip) 
sublayout.addWidget(lb_username) 
sublayout.addWidget(le_username) 
sublayout.addWidget(lb_password) 
sublayout.addWidget(le_password) 
sublayout.addWidget(lb_enable) 
sublayout.addWidget(le_enable) 
sublayout.addLayout(hblayout) 

sublayout2 = QVBoxLayout() 
sublayout2.addWidget(lb3) 
sublayout2.addWidget(combobox_ip_list) 
sublayout2.addStretch(1) 

layout = QGridLayout(window) 
layout.addLayout(sublayout,0,0) 
layout.addWidget(line,0,1) 
layout.addLayout(sublayout2,0,2) 

btadd.clicked.connect(addDevice) 

window.show() 
sys.exit(app.exec_()) 

答えて

0

のために追加すべき問題が発生します。

def addDevice(): 
    device_type = str(cb_device_list.currentText()) 
    ip = le_ip.text() 
    username = le_username.text() 
    password = le_password.text() 
    secret = le_enable.text() 
    command = 'show tech' 
    device_list.append(MyClass(device_type, ip, username, password, secret, command)) 
    #ip_list.append(ip) 
    combobox_ip_list.addItem(ip) 

完全なコード:

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

class MyClass(object): 
    def __init__(self, device_type=None, ip=None, username=None, password=None, secret=None, command=None): 
     self.device_type = device_type 
     self.ip = ip 
     self.username = username 
     self.password = password 
     self.secret = secret 
     self.command = command 

device_list = [] 
#ip_list = [] #----- object to load 

def addDevice(): 
    device_type = str(cb_device_list.currentText()) 
    ip = le_ip.text() 
    username = le_username.text() 
    password = le_password.text() 
    secret = le_enable.text() 
    command = 'show tech' 
    device_list.append(MyClass(device_type, ip, username, password, secret, command)) 
    #ip_list.append(ip) 
    combobox_ip_list.addItem(ip) 

################################## 
app = QApplication(sys.argv) 
app.setStyle('cleanlooks') 
window = QWidget() 
window.setWindowTitle("Network Automation") 
############################# Input IP 

# Device Type 
lb_device_list = QLabel(window) 
lb_device_list.setText('Device Type') 
cb_device_list = QComboBox(window) 
cb_device_list.addItem('cisco_ios') 
cb_device_list.addItem('cisco_s300') 

lb_ip = QLabel(window) 
bt = QPushButton(window) 
btadd = QPushButton(window) 

# Ip Device 
lb_ip.setText('IP Address') 
le_ip = QLineEdit(window) 
le_ip.setText('') 
le_ip.setPlaceholderText('Input Device IP') 
le_ip.setFixedWidth(150) 

# username 
lb_username = QLabel(window) 
le_username = QLineEdit(window) 
lb_username.setText('Username') 
le_username.setText('') 
le_username.setPlaceholderText('Input Username') 
le_username.setFixedWidth(150) 

# password 
lb_password = QLabel(window) 
le_password = QLineEdit(window) 
lb_password.setText('Password') 
le_password.setText('') 
le_password.setPlaceholderText('Input Password') 
le_password.setFixedWidth(150) 

# Privilage Password 
lb_enable = QLabel(window) 
lb_enable.setText('Privilege Mode Password') 
le_enable = QLineEdit(window) 
le_enable.setText('') 
le_enable.setPlaceholderText('Input Enable Password') 
le_enable.setFixedWidth(150) 

bt.setText('Generate') 
bt.setFixedWidth(70) 

btadd.setText('Add') 

line = QFrame(window) 
line.setFrameShape(QFrame.VLine) 
line.setFrameShadow(QFrame.Sunken) 
line.setLineWidth(3) 

########################### Layout Ip Device List 

lb3 = QLabel(window) 
lb3.setText('IP Device List') 
combobox_ip_list = QComboBox(window) 
combobox_ip_list.setFixedWidth(170) 
#combobox_ip_list.addItems(ip_list) # Didn't load after input the data 

############################## SubLayout and Layout 
hblayout = QHBoxLayout() 
hblayout.addWidget(bt) 
hblayout.addWidget(btadd) 

sublayout = QVBoxLayout() 
sublayout.addWidget(lb_device_list) 
sublayout.addWidget(cb_device_list) 
sublayout.addWidget(lb_ip) 
sublayout.addWidget(le_ip) 
sublayout.addWidget(lb_username) 
sublayout.addWidget(le_username) 
sublayout.addWidget(lb_password) 
sublayout.addWidget(le_password) 
sublayout.addWidget(lb_enable) 
sublayout.addWidget(le_enable) 
sublayout.addLayout(hblayout) 

sublayout2 = QVBoxLayout() 
sublayout2.addWidget(lb3) 
sublayout2.addWidget(combobox_ip_list) 
sublayout2.addStretch(1) 

layout = QGridLayout(window) 
layout.addLayout(sublayout,0,0) 
layout.addWidget(line,0,1) 
layout.addLayout(sublayout2,0,2) 

btadd.clicked.connect(addDevice) 

window.show() 
sys.exit(app.exec_()) 
あなたのケースでは、リスト内のデータを保存するだけで addItemQComboboxにそれを追加する必要はありません
関連する問題