首页 > 解决方案 > 如何连接来自两个不同组合框的两个字符串变量并将它们插入文本框中?

问题描述

我创建了两个不同的组合框:组合框A和组合框B当我更改第一个组合框A时,它们都有一些值组合框B的内容发生了变化,我创建了一个文本条目来移动组合框A和组合框B中选择的当前文本,但我有一个问题:我不知道如何组合两个变量字符串。

from tkinter import *
from tkinter import ttk
import time;


#MAIN SCREEN
master = Tk()
master.geometry ('600x400')
master.title('project first step')



#CHANGE CONTENT OF COMBOBOX

def Callmain_list(*args):
    sel = main_list.get()
    if sel == Main_list[0]:
        ListB = Spare_parts_main
    elif sel == Main_list[1]:
        ListB = Assets_main
    elif sel == Main_list[2]:
        ListB = Tools_main
    comboboxB.config(values=ListB)



Main_list=['قطع غيار','أصول ثابتة','عدد و أدوات']

Spare_parts_main=['سيور','رومان      
  بلي','هيدروليك','تروس','كتائن','طلمبات','نيوماتيك','انكودرات','مغيرات   
 سرعة','محركات كهربية','سخانات']


Assets_main=['وحدات لحام','مكابس','ثنايات','مخارط','فرايز','خطوط 
تقطيع','مقصات']

Tools_main=['حجر تجليخ','دسك تقطيع','ماكينة برشام']

ListB=()


# FIRST COMBOBOX

main_list = StringVar()
main_list.set('please select')

comboboxA=ttk.Combobox(master,font=("Arial",15)    
,textvariable=main_list,values=Main_list,width=20,heigh=20)
comboboxA.bind("<<ComboboxSelected>>",Callmain_list)
comboboxA.grid(row=0, column=0)


# SECOND COMBOBOX

spare_main_list = StringVar()
spare_main_list.set('please select')
comboboxB=ttk.Combobox(master,font=("Arial",15)    
,textvariable=spare_main_list,values=ListB,width=20,heigh=20)

comboboxB.grid(row=1, column=0)

collection = StringVar()

a = main_list

b = spare_main_list

collection = {a} + {b}

# ENTRY BOX TO COLLECT THE DISCRIPTION



discription_collect = Entry(master,  font=('arial',15, 'bold'),
                            textvariable=collection, bd=15,     
insertwidth=6,
                            bg='powder blue', justify='right')
discription_collect.insert(0,collection)

discription_collect.grid(row=3, column=0)




mainloop()

标签: python-3.xtkinter

解决方案


你必须改变这个:

a = main_list
b = spare_main_list
collection = {a} + {b}

对此:

a = main_list.get()
b = spare_main_list.get()
collection.set(a + " --- " + b)

您的代码的完整版本:

from tkinter import *
from tkinter import ttk

# MAIN SCREEN
master = Tk()
master.geometry('600x400')
master.title('Project First Step')


# CHANGE CONTENT OF COMBOBOX
def Callmain_list(*args):
    sel = main_list.get()
    if sel == Main_list[0]:
        comboboxB.config(values=Spare_parts_main)
    elif sel == Main_list[1]:
        comboboxB.config(values=Assets_main)
    elif sel == Main_list[2]:
        comboboxB.config(values=Tools_main)


def AddValue(*args):
    a = main_list.get()
    b = spare_main_list.get()
    collection.set(a + " --- " + b)


Main_list = ['Parts', 'Fixed Assets', 'Number and Tools']
Spare_parts_main = ['Cior', 'Roman Bell', 'Hydraulic', 'Gear', 'Lathes', 'Pumps', 'Pneumatic', 'Encoders', 'Speed Changers', 'Electric Motors', 'Heaters']
Assets_main = ['Welding Units', 'Presses', 'Flanges', 'Lathes', 'Fries', 'Cutters', 'Scissors']
Tools_main = ['Stone Grinding', 'Disc Cutting', 'Riveting Machine']

# FIRST COMBOBOX
main_list = StringVar()
main_list.set('Please Select')

comboboxA = ttk.Combobox(master, font=("Arial", 15), textvariable=main_list, values=Main_list, width=20, heigh=20)
comboboxA.bind("<<ComboboxSelected>>", Callmain_list)
comboboxA.grid(row=0, column=0)

# SECOND COMBOBOX
spare_main_list = StringVar()
spare_main_list.set('Please Select')
comboboxB = ttk.Combobox(master, font=("Arial", 15), textvariable=spare_main_list, values=[], width=20, heigh=20)
comboboxB.bind("<<ComboboxSelected>>", AddValue)
comboboxB.grid(row=1, column=0)

collection = StringVar()

# ENTRY BOX TO COLLECT THE DISCRIPTION
discription_collect = Entry(master, font=('arial', 15, 'bold'), textvariable=collection, bd=15, insertwidth=6, bg='powder blue', justify='right')
discription_collect.insert(0, collection)
discription_collect.grid(row=3, column=0)

mainloop()

推荐阅读