Tkinter窗口管理

2024-05-15 04:08:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设计一个护士呼叫服务系统。我使用python来实现软件.every房间将包含两个按钮呼叫和取消。当按下呼叫按钮时,护士站上会显示相应的房间和床,直到按下取消按钮。如果多个呼叫挂起,它将显示在先进先出的基础上。对于服务,我编写函数。如果先接到中间或最上面的电话,我必须在tkinter窗口上移挂起的电话

def service():
    global servicependingid1,servicependingid2,servicependingid3,servicependingid4
    msg1="call from  "
    msg2="  bed  "
    if receiveddata== "SBid1" and  servicependingid1:
              if servicependingid2>servicependingid1:
                     servicependingid2=servicependingid2-1
                     id2position= Label(window,text=(msg1+id2room+msg2+id2bed),fg="yellow",bg="blue",font=("Helvetica", size))
                     id2position.grid(row=servicependingid2,column=2,sticky=W)
                     id2servicetrack=servicependingid2
               if servicependingid3>servicependingid1:
                      servicependingid3=servicependingid3-1
                      id3position= Label(window,text=(msg1+id3room+msg2+id3bed),fg="yellow",bg="blue",font=("Helvetica", size))
                      id3position.grid(row=servicependingid3,column=2,sticky=W)
                      id3servicetrack=servicependingid3
        if receiveddata== "SBid2" and  servicependingid2:
              if servicependingid1>servicependingid2:
                     servicependingid1=servicependingid1-1
                     id2position= Label(window,text=(msg1+id2room+msg2+id2bed),fg="yellow",bg="blue",font=("Helvetica", size))
                     id2position.grid(row=servicependingid1,column=2,sticky=W)
                     id2servicetrack=servicependingid2
               if servicependingid3>servicependingid2:
                      servicependingid3=servicependingid3-1
                      id3position= Label(window,text=(msg1+id3room+msg2+id3bed),fg="yellow",bg="blue",font=("Helvetica", size))
                      id3position.grid(row=servicependingid3,column=2,sticky=W)
                      id3servicetrack=servicependingid3

如果房间和床的面积都不大,那么这种方法就会产生问题。有没有更好的方法来实现这个功能。是否有任何python指令将挂起的调用向上移动?你知道吗


Tags: textifservicebluewindowlabelbgyellow
1条回答
网友
1楼 · 发布于 2024-05-15 04:08:42

听起来你想使用一个(有序的)列表。你知道吗

  • 当按下“呼叫”按钮时,该房间进入列表的末尾(如果它还没有在列表中)。你知道吗
  • 当按下“取消”按钮时,如果该房间在列表中,则该房间将从列表中删除。你知道吗
  • 当一个电话被接听时,它就从名单的前面去掉了。你知道吗
  • 要按顺序显示所有呼叫,只需浏览列表。你知道吗

一个简单的例子

roomsToService = [] # list of rooms to service

def callFromRoom(roomNumber):
    if roomNumber in roomsToService:
        return
    roomsToService.append(roomNumber)

def cancelFromRoom(roomNumber):
    if roomNumber not in roomsToService:
        return
    roomsToService.remove(roomNumber)

def showRoomsToService():
    print(roomsToService)

callFromRoom(302)
callFromRoom(606)
callFromRoom(100)
showRoomsToService() # [302, 606, 100]

cancelFromRoom(606)
showRoomsToService() # [302, 100]

相关问题 更多 >

    热门问题